Upstream commit 3b072c577b (tests: replace test_tristate with "git
env--helper", 2019-06-21) semi-broke the git-svn tests which require
httpd. This was subsequently fixed in upstream commit 6a20b62d7e
(t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests,
2019-09-06).
The upstream fix also adjusted the variable name to follow the preferred
naming scheme, i.e. GIT_SVN_TEST_ -> GIT_TEST_SVN_. Fix the variable in
%check to indicate that we want those tests to run.
We were still running the tests because we had all the necessary
dependencies. But we want to ensure that we don't skip them
opportunistically if those dependencies ever change.
Update comment which suggest a method for (manually) checking such
variables in the test suite.
The Documentation/cmd-list.perl script requires File::Compare to
generate various cmds-$area.txt file which are included in the main git
help. This has been broken since File::Compare was split from the main
perl package in 3b63b8c (Subpackage File::Compare, 2020-01-06)¹.
The result is a broken git man/html page. In git(1), the output is:
HIGH-LEVEL COMMANDS (PORCELAIN)
We separate the porcelain commands into the main commands
and some ancillary user utilities.
Main porcelain commands
Unresolved directive in git.txt -
include::cmds-mainporcelain.txt[]
Ancillary Commands
Manipulators:
Unresolved directive in git.txt -
include::cmds-ancillarymanipulators.txt[]
Interrogators:
Unresolved directive in git.txt -
include::cmds-ancillaryinterrogators.txt[]
...
This is logged during the build:
make[1]: Entering directory '/builddir/build/BUILD/git-2.32.0.rc3/Documentation'
rm -f cmd-list.made && \
/usr/bin/perl ./cmd-list.perl ../command-list.txt 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-purehelpers.txt cmds-foreignscminterface.txt && \
date >cmd-list.made
Can't locate File/Compare.pm in @INC (you may need to install the File::Compare module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./cmd-list.perl line 3.
BEGIN failed--compilation aborted at ./cmd-list.perl line 3.
make[1]: Leaving directory '/builddir/build/BUILD/git-2.32.0.rc3/Documentation'
This should probably cause a make error rather than generating
incomplete documentation. I'll try to report this upstream (ideally
with a patch to resolve it). It's also worth remembering to search the
build logs for such failures. "Can't locate .* in @INC" and "BEGIN
failed" are good strings to search.
¹ https://src.fedoraproject.org/rpms/perl/c/3b63b8c
With the impending removal of a large chunk of the Java package set,
jgit will become unavailable as a BuildRequires in Fedora soon. Remove
the build dependency on Fedora >= 35.
As noted in 8faf622 (drop jgit BR on Fedora > 30, 2019-07-29), this
affects 3 tests, 2 for packfile format (t5310-pack-bitmaps) and
1 of ls-remote (t5512-ls-remote).
The NEEDS_CRYPTO_WITH_SSL Makefile knob was added in 7878348 (Update to
git-1.7.0 - Link imap-send with libcrypto (#565147) - Disable building
of unused python remote helper libs, 2010-02-15). It is no longer
needed.
I'm not sure when it stopped being necessary, though I am sure I tried
removing once before in the 11 years since it was added.
Builds on Fedora and EL7/EL8 all properly pick up the -lssl -lcrypto
flags when compiling git-imap-send.
Incidentally, git-imap-send has used libcurl for handling IMAP rather
than low-level OpenSSL-based functions on Fedora since upstream commit
dbba42bb32 (imap-send: use curl by default when possible, 2017-09-14).
This applies to EL8 as well. On EL7, libcurl is too old (>= 7.34.0 is
required).
The git-p4 subpackage has been disabled in Fedora 30 via a4b4f7c (Add
support for disabling python2, 2018-03-28). Git 2.17.0 was the current
release at that time. The git-p4 script subsequently gained python3
support which was released in Git 2.27.0 (2020-05-31).
Adjust the python2/python3 conditionals and re-enable git-p4 when either
of them are available. Put python3 first in the various conditionals,
as that is our primary supported python. We only include python2 to aid
in building for EL7.
While here, remove the "# endif" comments within the config.mak output.
We're unlikely to provide the 'WINDOWS' prerequisite in our builds. Nor
are we likely to care about the tests which are skipped as a result.
(Also, 'missing WINDOWS' is not a phrase I thought I'd ever write.)
Remove all conditionals for EL-6; it is EOL as of November 2020.
Replace a number of `EL > 7` with `EL >= 8` to make the intention
clearer. The next version of RHEL is no longer shrouded in mystery.
Drop conditionals which apply only to long-obsolete Fedora releases.
All %defattr macros were removed in ff200ca (Remove obsolete %defattr,
2018-02-07). Two were subsequently added in f8a83b9 (Move instaweb to a
subpackage, 2018-09-06) and 9d91bab (split libsecret credential helper
into a subpackage (#1804741), 2020-02-19).
Remove both entries and (hopefully) avoid adding new entries in the
future.
The UTF8_NFD_TO_NFC prereq was added to t0021-conversion and
t2006-checkout-index-basic in upstream commit 684dd4c2b4 (checkout: fix
bug that makes checkout follow symlinks in leading path, 2020-12-10), to
test the fixes for CVE-2021-21300.
Fedora's supported systems do not appear to "convert decomposed utf-8
(nfd) to precomposed utf-8 (nfc)" which is what the prereq covers.
Ignore the skipped tests which use the UTF8_NFD_TO_NFC prereq when
looking for missing test dependencies and/or incorrectly skipped tests.
This release includes a fix for CVE-2021-21300¹ in addition to the other
changes along the path to the final 2.31.0 release.
Release notes:
https://github.com/git/git/raw/v2.31.0-rc2/Documentation/RelNotes/2.31.0.txt
¹ Per the 2.17.6 release notes on CVE-2021-21300:
On case-insensitive file systems with support for symbolic links, if
Git is configured globally to apply delay-capable clean/smudge
filters (such as Git LFS), Git could be fooled into running remote
code during a clone.
Use %{gpgverify} macro to verify tarball signature. The macro is now
available for all supported Fedora and EPEL releases. (It is presumed
that EL-9 will include %{gpgverify} as it will be branched from F-34.
If that turns out to be false, we will adjust later.)
The Packaging Guidelines require the use of the %{gpgverify} macro:
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_verifying_signatures
Add a BuildRequires for xz as well, since we use it explicitly in %prep.
Renumber Junio's GPG key from Source9 to Source2 so the %{gpgverify}
calls follow the typical pattern. It (mildly) lessens cognitive load
for anyone reviewing the spec file.
While here, remove a stale comment about leaving a blank line after
%autosetup to work around a bug on EL6.
We disabled t7812's 'PCRE v2: grep non-ASCII from invalid UTF-8 data'
test in 33ecb78 (skip failing test in t7812-grep-icase-non-ascii on
s390x, 2019-10-24).
It was subsequently fixed upstream in e714b898c6 (t7812: expect failure
for grep -i with invalid UTF-8 data, 2019-11-29) and more recently
improved with a4fea08b6e (grep/pcre2 tests: don't rely on invalid UTF-8
data test, 2021-01-24).
Don't skip the test any longer.
The key used to sign git releases expired in July 2020. While this
doesn't strictly affect us because use gpgv to verify the releases
against a known key file, it is worth updating to make it clear that
we're using the correct signing key.
Refer to 7c95c76 (Update Junio's GPG key, 2017-09-16) for a previous
update of the key, including the process used.
Here is a diff of the key file before and after the update:
$ diff -u <(gpg gpgkey-junio.asc.old 2>/dev/null) <(gpg gpgkey-junio.asc 2>/dev/null)
--- /dev/fd/63 2021-01-25 11:57:17.367151191 -0500
+++ /dev/fd/62 2021-01-25 11:57:17.368151229 -0500
@@ -3,6 +3,6 @@
uid Junio C Hamano <gitster@pobox.com>
uid Junio C Hamano <junio@pobox.com>
uid Junio C Hamano <jch@google.com>
-sub rsa4096/B0B5E88696AFE6CB 2011-10-03 [S] [expired: 2020-07-26]
+sub rsa4096/B0B5E88696AFE6CB 2011-10-03 [S] [expires: 2028-01-11]
sub rsa4096/86B76D5D833262C4 2011-10-01 [E]
-sub rsa4096/7594EEC7B3F7CAC9 2014-09-20 [S] [expired: 2020-07-26]
+sub rsa4096/7594EEC7B3F7CAC9 2014-09-20 [S] [expires: 2028-01-11]
This thread on the git list is where the question was raised and Junio
confirmed he'd extended the expiration of his signing key:
https://lore.kernel.org/git/B6DFB74D-A722-4DBD-A4B2-562604B21CCB@alchemists.io/T/#u
Making the main package noarch is not trivial since we have
arch-specific subpackages. (I'm not sure it's even possible.)
As noted in 5c331b2 (fix/quiet rpmlint issues from libsecret split,
2020-04-05), when libsecret was split into a subpackage in 9d91bab
(split libsecret credential helper into a subpackage (#1804741),
2020-02-19), it removed the only remaining binary from the main package.
The `git difftool` command was converted to a builtin in git-2.12.0
(from 2017). We don't need to split it out of git-core.
This was missed in cb7fab7 (Move commands which no longer require perl
into git-core, 2017-11-10) and d56cfc6 (Use symlinks instead of
hardlinks for installed binaries, 2018-03-15). Better late than never.
We intend to support building on all supported Fedora and EPEL releases
from the Rawhide branch. On EL-7, the %build_cflags and %build_ldflags
macros are not present without installing epel-rpm-macros. Add a build
requirement to ensure these macros are available when building on EL-7.
A change in git-2.27.0¹ caused fast-import to leak memory and crash in
some cases. Apply the upstream fix², which didn't quite make it into
git-2.29.0.
¹ ddddf8d7e2 (fast-import: permit reading multiple marks files, 2020-02-22)
https://github.com/git/git/commit/ddddf8d7e2
² 3f018ec716 (fast-import: fix over-allocation of marks storage, 2020-10-15)
https://github.com/git/git/commit/3f018ec716
A change in git-2.24.0¹ resulted in a segfault when combining the
incompatible (and nonsensical) --follow and -L git log options. (These
options were used by the GitLens plugin for VS Code until recently².)
The upstream fix returns an error when these options are combined rather
than a segfault.
¹ a2bb801f6a (line-log: avoid unnecessary full tree diffs, 2019-08-21)
https://github.com/git/git/commit/a2bb801f6a
² Fixed in GitLens >= 10.2.3
https://github.com/eamodio/vscode-gitlens/issues/1139
Quoting from Jeff King's commit message:
Commit e8cbe2118a (am: stop exporting GIT_COMMITTER_DATE, 2020-08-17)
rewrote the code for setting the committer date to use fmt_ident(),
rather than setting an environment variable and letting commit_tree()
handle it. But it introduced two bugs:
- we use the author email string instead of the committer email
- when parsing the committer ident, we used the wrong variable to
compute the length of the email, resulting in it always being a
zero-length string
The regression affected both am and rebase. Apply the upstream fixes.
References:
https://lore.kernel.org/git/20201023070747.GA2198273@coredump.intra.peff.net/
The update to 2.29.1 is pointless on its own¹, but a subsequent commit
will add some additional post-release fixes for 2.29. Once we're
pushing an update, we might as well pick up the latest point release to
avoid anyone wondering why we've skipped an update.
Release notes:
https://github.com/git/git/raw/v2.29.1/Documentation/RelNotes/2.29.1.txt
¹ The only change in 2.29.1 is a Makefile fix for users of the
non-default SKIP_DASHED_BUILT_INS installation option.
The hg-to-git.py script in contrib grew python3 support in upstream
commit d17ae00c97 (hg-to-git: make it compatible with both python3 and
python2, 2019-09-18), which was released in git-2.24.0. Move it from
the python2-only conditionals.
(This leaves contrib/fast-import/import-zips.py as the sole python
script which is _not_ python3-compatible. It seems to need only minimal
fixes for python2/python3 compatibility -- per some light testing.)