Compare commits

...
Sign in to create a new pull request.

113 commits

Author SHA1 Message Date
Ondřej Pohořelský
da35363f19 remove unused buildrequires 2025-12-12 13:32:24 +01:00
Ondřej Pohořelský
c488c27117 update to 2.52.0 2025-11-20 13:41:02 +01:00
Yaakov Selkowitz
6c89b0ef9d Build with highlight on all arches on EL8+
While highlight was only built/shipped on some arches in RHEL 7 Optional,
as of RHEL 8 it is built on all arches (albeit not shipped as of 10).
2025-11-17 11:55:29 -05:00
Ondřej Pohořelský
8f542b0496 update to 2.51.1 2025-10-23 09:34:39 +02:00
Yaakov Selkowitz
ba249bb3a1 Revbump for tcl/tk 9
Currently, the rawhide and f43 branches both have -2, but the tcl/tk 9
change is only on rawhide.
2025-10-12 18:21:24 -04:00
Ondřej Pohořelský
8e9df669b8 exclude sample hook files from automatic dependency detection 2025-08-21 18:44:54 +02:00
Yanko Kaneti
4cf7527c99 Gitk can now work with tcl/tk 9 2025-08-21 16:46:57 +03:00
Ondřej Pohořelský
90cb7985fd update to 2.51.0 2025-08-20 14:35:53 +02:00
Fedora Release Engineering
fc75418e16 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-23 22:22:42 +00:00
Ondřej Pohořelský
54ed4ea4ba update to 2.50.1 2025-07-08 22:41:07 +02:00
Ondřej Pohořelský
001bf29ac7 update to 2.50.0 2025-06-23 14:16:09 +02:00
Ondřej Pohořelský
a0b3d1a02b Adds the option to sanitize sideband channel messages
CVE-2024-52005 wasn't fixed by upstream. This patch adds the option to harden Git against it.
The default behaviour of Git remains unchanged.
2025-03-24 12:17:11 +01:00
Ondřej Pohořelský
9a2fecfe2e update to 2.49.0 2025-03-17 15:37:51 +01:00
Yanko Kaneti
716550b90a Keep gitk on tcl/tk 8.x until its ready for 9 2025-02-06 10:13:29 +02:00
Fedora Release Engineering
ecbadc14c1 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-16 22:01:51 +00:00
Ondřej Pohořelský
078a91e01a update to 2.48.1 2025-01-15 09:29:00 +01:00
Ondřej Pohořelský
0b1ce8c0dc update to 2.48.0 2025-01-13 13:25:40 +01:00
Ondřej Pohořelský
d4648b15be update to 2.47.1 2024-11-25 10:53:34 +01:00
Ondřej Pohořelský
d4d986abeb update to 2.47.0 2024-10-08 15:19:07 +02:00
Ondřej Pohořelský
2354ed4041 repair bogus date in the changelog 2024-09-24 14:34:39 +02:00
Ondřej Pohořelský
b7b63fdc8b update to 2.46.2 2024-09-24 14:31:26 +02:00
Ondřej Pohořelský
8cb6752747 update to 2.46.1 2024-09-16 11:12:46 +02:00
Ondřej Pohořelský
fe2066bbb4 mark git@.service as config(noreplace)
Each update git@.service has been overwritten, removing users custom configurations.
Marking it as config(noreplace) should prevent this behaviour.
2024-09-04 10:42:06 +02:00
Ondřej Pohořelský
0a0995368d update to 2.46.0 2024-08-05 12:53:23 +02:00
Ondřej Pohořelský
699e77dbcb build without perl_modcompat in EL >= 10 2024-07-19 09:29:31 +02:00
Fedora Release Engineering
624305e5be Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-18 02:23:37 +00:00
Ondřej Pohořelský
e49fa1c239 disable p4 subpackage on EL >= 10 2024-07-01 16:34:10 +02:00
Ondřej Pohořelský
2041c47024 build documentation with asciidoc on EL >= 10 2024-07-01 16:30:12 +02:00
Ondřej Pohořelský
9f89b9e069 add glibc-utils BuildRequires 2024-06-20 23:36:27 -04:00
Ondřej Pohořelský
05522a0e2a update to 2.45.2 2024-06-03 12:50:38 +02:00
Ondřej Pohořelský
18e0835469 update to 2.45.1 2024-05-15 09:29:45 +02:00
Ondřej Pohořelský
db55f698a0 update to 2.45.0 2024-04-30 17:15:29 +02:00
Ondřej Pohořelský
59c96e058b update to 2.44.0 2024-02-26 09:50:12 +01:00
Ondřej Pohořelský
9c8b3cf927 update to 2.43.2
Resolves: #2264318
2024-02-15 09:02:27 +01:00
Ondřej Pohořelský
11fa102767 update to 2.43.1
resolves: #2263575
2024-02-12 11:17:05 +01:00
Fedora Release Engineering
2a4367e6d7 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-24 14:51:35 +00:00
Fedora Release Engineering
75aab98556 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-19 22:22:27 +00:00
Yaakov Selkowitz
cab00c80b7 Fix perl-podlators dependency
With /app-prefixed builds of perl now existing for flatpaks, file
dependencies must not be used for perl components.
2024-01-09 15:57:42 +00:00
Ondřej Pohořelský
9323031c03 apache.conf set DavLockDBType to sdbm
With the recent change that drops apr-util-bdb build require, in
favor of httpd, t5540 started failing on tests using git-httpd-push.
This patch sets DavLockDBType to sdbm, fixing these failures.
2024-01-09 12:03:02 +01:00
Ondřej Pohořelský
a8ab7b524d Disable t6300.35 t6300.107 t6300.108
These tests break with zlib-ng, disable them until upstream merges
patch solving this issue.
2023-12-20 18:21:47 +01:00
Ondřej Pohořelský
f2b3ab26cc update to 2.43.0 2023-11-21 14:23:40 +01:00
Ondřej Pohořelský
3b9b7132cc update to 2.42.1 2023-11-15 09:17:33 +01:00
Joe Orton
7edc80fb3b remove explicit BR for apr-util-bdb (#2247532) 2023-11-03 09:37:39 +00:00
Ondřej Pohořelský
ac4f507599 update to 2.42.0 2023-10-03 15:31:37 +02:00
Fedora Release Engineering
be8516cba3 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-19 23:01:21 +00:00
Yaakov Selkowitz
2600353fc1 Fix file dependencies
Installation path macros must not be used in file dependencies:

https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_and_directory_dependencies
2023-07-06 12:03:58 -04:00
Todd Zullinger
ee7f0d47a7 update to 2.41.0
Release notes:
https://github.com/git/git/raw/v2.41.0/Documentation/RelNotes/2.41.0.txt
2023-06-01 10:24:28 -04:00
Todd Zullinger
bae778cbc1 fix Source URL handling
Move %rcpath definition added d050347 (use tilde versioning for release
candidates, 2023-05-12) after %real_version.  Otherwise, it is not
parsed correctly.

(I'm pretty sure it worked in the past, but it certainly doesn't now.)
2023-06-01 10:20:55 -04:00
Todd Zullinger
9e3c6109b5 git.skip-test-patterns: ignore 'skip all tests in t5559'
We added t5559-http-fetch-smart-http2 to GIT_SKIP_TESTS in 7d21254
(update to 2.39.0-rc0, 2022-11-23).  Update git.skip-test-patterns to
reflect this.
2023-05-24 21:26:16 -04:00
Todd Zullinger
a297238a54 update to 2.41.0-rc2
Release notes:
https://github.com/git/git/raw/v2.41.0-rc2/Documentation/RelNotes/2.41.0.txt
2023-05-24 17:50:22 -04:00
Todd Zullinger
3f9ea1c489 update to 2.41.0-rc1
Release notes:
https://github.com/git/git/raw/v2.41.0-rc1/Documentation/RelNotes/2.41.0.txt
2023-05-19 15:40:11 -04:00
Todd Zullinger
08d76e08ab update to 2.41.0-rc0
Release notes:
https://github.com/git/git/raw/v2.41.0-rc0/Documentation/RelNotes/2.41.0.txt
2023-05-15 23:05:09 -04:00
Todd Zullinger
d050347835 use tilde versioning for release candidates
All supported released of Fedora and EPEL support the tilde notation.

Reference:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/
2023-05-15 23:03:37 -04:00
Todd Zullinger
b477fc3318 update to 2.40.1 (CVE-2023-25652, CVE-2023-25815, CVE-2023-29007)
Refer to the release notes for 2.30.9 for details of each CVE as well as
the following security advisories from the git project:

https://github.com/git/git/security/advisories/GHSA-2hvf-7c8p-28fx (CVE-2023-25652)
https://github.com/git/git/security/advisories/GHSA-v48j-4xgg-4844 (CVE-2023-29007)

(At this time there is no upstream advisory for CVE-2023-25815.  This
issue does not affect the Fedora packages as we do not use the runtime
prefix support.)

Release notes:
https://github.com/git/git/raw/v2.30.9/Documentation/RelNotes/2.30.9.txt
https://github.com/git/git/raw/v2.40.1/Documentation/RelNotes/2.40.1.txt
2023-04-25 13:16:39 -04:00
Todd Zullinger
459d08b118 update to 2.40.0
Release notes:
https://github.com/git/git/raw/v2.40.0/Documentation/RelNotes/2.40.0.txt
2023-03-13 14:11:40 -04:00
Todd Zullinger
b8be89a815 update to 2.40.0-rc2
Release notes:
https://github.com/git/git/raw/v2.40.0-rc2/Documentation/RelNotes/2.40.0.txt
2023-03-07 14:59:23 -05:00
Todd Zullinger
01d712d89b update to 2.40.0-rc1
Apply upstream patch to resolve issues in range-diff on non-x86 arches.

Release notes:
https://github.com/git/git/raw/v2.40.0-rc1/Documentation/RelNotes/2.40.0.txt
2023-03-01 15:42:47 -05:00
Todd Zullinger
f5940a719d update to 2.40.0-rc0
Release notes:
https://github.com/git/git/raw/v2.40.0-rc0/Documentation/RelNotes/2.40.0.txt
2023-02-24 16:37:12 -05:00
Todd Zullinger
4583821b53 update to 2.39.2 (CVE-2023-22490, CVE-2023-23946)
From the release notes for 2.30.8¹:

     * CVE-2023-22490:

       Using a specially-crafted repository, Git can be tricked into using
       its local clone optimization even when using a non-local transport.
       Though Git will abort local clones whose source $GIT_DIR/objects
       directory contains symbolic links (c.f., CVE-2022-39253), the objects
       directory itself may still be a symbolic link.

       These two may be combined to include arbitrary files based on known
       paths on the victim's filesystem within the malicious repository's
       working copy, allowing for data exfiltration in a similar manner as
       CVE-2022-39253.

     * CVE-2023-23946:

       By feeding a crafted input to "git apply", a path outside the
       working tree can be overwritten as the user who is running "git
       apply".

     * A mismatched type in `attr.c::read_attr_from_index()` which could
       cause Git to errantly reject attributes on Windows and 32-bit Linux
       has been corrected.

    Credit for finding CVE-2023-22490 goes to yvvdwf, and the fix was
    developed by Taylor Blau, with additional help from others on the
    Git security mailing list.

    Credit for finding CVE-2023-23946 goes to Joern Schneeweisz, and the
    fix was developed by Patrick Steinhardt.

¹ https://github.com/git/git/raw/v2.39.2/Documentation/RelNotes/2.30.8.txt
2023-02-14 13:15:01 -05:00
Todd Zullinger
7c34cecc4c drop perl Email::Valid dep on RHEL (#2166718)
The git send-email command uses Email::Valid to check addresses.  If
Email::Valid is not present, it falls back to a more basic regex match
(which is not nearly as thorough as the checks Email::Valid performs).

While Fedora (and EPEL 7/8 provide perl-Email-Valid, RHEL does not and
does not wish to add the dependency.  Make it easier for RHEL to fork &
sync from us by making the dependency conditional.

References:
https://bugzilla.redhat.com/2020487
https://bugzilla.redhat.com/2046203
http://public-inbox.org/git/20220620004427.3586240-1-trawets@amazon.com/T/#u
4414f61 (add more git-email perl dependencies, 2021-11-13)
2023-02-03 16:05:16 -05:00
Fedora Release Engineering
04a6af281b Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-19 04:55:02 +00:00
Todd Zullinger
029feecb34 update to 2.39.1 (CVE-2022-41903, CVE-2022-23521)
From the release notes for 2.30.7¹:

    * CVE-2022-41903:

       git log has the ability to display commits using an arbitrary
       format with its --format specifiers. This functionality is also
       exposed to git archive via the export-subst gitattribute.

       When processing the padding operators (e.g., %<(, %<|(, %>(,
       %>>(, or %><( ), an integer overflow can occur in
       pretty.c::format_and_pad_commit() where a size_t is improperly
       stored as an int, and then added as an offset to a subsequent
       memcpy() call.

       This overflow can be triggered directly by a user running a
       command which invokes the commit formatting machinery (e.g., git
       log --format=...). It may also be triggered indirectly through
       git archive via the export-subst mechanism, which expands format
       specifiers inside of files within the repository during a git
       archive.

       This integer overflow can result in arbitrary heap writes, which
       may result in remote code execution.

    * CVE-2022-23521:

       gitattributes are a mechanism to allow defining attributes for
       paths. These attributes can be defined by adding a `.gitattributes`
       file to the repository, which contains a set of file patterns and
       the attributes that should be set for paths matching this pattern.

       When parsing gitattributes, multiple integer overflows can occur
       when there is a huge number of path patterns, a huge number of
       attributes for a single pattern, or when the declared attribute
       names are huge.

       These overflows can be triggered via a crafted `.gitattributes` file
       that may be part of the commit history. Git silently splits lines
       longer than 2KB when parsing gitattributes from a file, but not when
       parsing them from the index. Consequentially, the failure mode
       depends on whether the file exists in the working tree, the index or
       both.

       This integer overflow can result in arbitrary heap reads and writes,
       which may result in remote code execution.

    Credit for finding CVE-2022-41903 goes to Joern Schneeweisz of GitLab.
    An initial fix was authored by Markus Vervier of X41 D-Sec. Credit for
    finding CVE-2022-23521 goes to Markus Vervier and Eric Sesterhenn of X41
    D-Sec. This work was sponsored by OSTIF.

    The proposed fixes have been polished and extended to cover additional
    findings by Patrick Steinhardt of GitLab, with help from others on the
    Git security mailing list.

¹ https://github.com/git/git/raw/v2.39.1/Documentation/RelNotes/2.30.7.txt
2023-01-17 15:13:12 -05:00
Todd Zullinger
6fcfc2d4a2 require perl(MODULE_COMPAT) for Fedora < 38 and RHEL
ce294ea (Remove perl(MODULE_COMPAT), it will be replaced by generators,
2023-01-13) removed the `Requires: perl(:MODULE_COMPAT_*)` entirely.
This is not suitable for merging to older Fedora or RHEL releases.  Make
the requirement conditional.
2023-01-17 15:12:29 -05:00
Jitka Plesnikova
ce294eae02 Remove perl(MODULE_COMPAT), it will be replaced by generators 2023-01-13 09:35:22 +01:00
Todd Zullinger
66efed4a98 update to 2.39.0
Release notes:
https://github.com/git/git/raw/v2.39.0/Documentation/RelNotes/2.39.0.txt
2022-12-12 13:27:10 -05:00
Todd Zullinger
54729198f5 update to 2.39.0-rc2
Release notes:
https://github.com/git/git/raw/v2.39.0-rc2/Documentation/RelNotes/2.39.0.txt
2022-12-06 01:54:30 -05:00
Todd Zullinger
0af3adfcb1 include test-results & "trash" directory contents in build output
When a build fails, the contents of t/test-results and the trash
directories can be quite useful for debugging.  This is particularly
true when the failures occur only in Koji, where we can't get a shell
and poke around.

Create a compressed tarball and encode it with base64 to allow it to be
output along with the normal build output.  Include instruction on how
to extract the base64-encoded content from the build log inline.

The tar archive is compressed with zstd which provides a good balance of
speed and size.  The compression level of 17 was chosen after a number
of tests against real test failures, as opposed to entirely random
selection. ;)
2022-12-06 01:54:30 -05:00
Todd Zullinger
13887794b7 update to 2.39.0-rc1
Release notes:
https://github.com/git/git/raw/v2.39.0-rc1/Documentation/RelNotes/2.39.0.txt
2022-12-01 15:22:49 -05:00
Todd Zullinger
7d21254b02 update to 2.39.0-rc0
Add mod_http2 BuildRequires for t5559-http-fetch-smart-http2; skip it on
EL7, which lacks it.  Ignore the expected 'missing HTTP2' output from
t5551-http-fetch-smart.  Use a strict pattern to avoid unintended
matches.

Sadly, we must also disable t5559 for now.  It fails very often across
all architectures.  The most common failure is "large fetch-pack
requests can be sent using chunked encoding" (t5559.30), but earlier
tests have also failed.  Until these failures are understood and
resolved, the entire test is disabled globally.  (It's also disabled for
EL-7, which is redundant now but won't be after we re-enable the test
globally in the near future.)

We can't simply skip the mod_http2 dependency here because we set
GIT_TEST_HTTPD=true.  Per upstream 73c49a4474 (t: run t5551 tests with
both HTTP and HTTP/2, 2022-11-11):

    If HTTP/2 isn't supported on a given platform, then t5559 should
    bail during the webserver setup, and gracefully skip all tests
    (unless GIT_TEST_HTTPD has been changed from "auto" to "yes", where
    the point is to complain when webserver setup fails).

Also ignore the 'missing BUILTIN_TXT_$builtin' output which comes from
upstream a0c3244796 (doc SYNOPSIS & -h: use "-" to separate words in
labels, not "_", 2022-10-13).  We may want to loosen this in the future,
but for now ignore it because it doesn't help us identify missing test
dependencies.

Release notes:
https://github.com/git/git/raw/v2.39.0-rc0/Documentation/RelNotes/2.39.0.txt
2022-12-01 15:22:49 -05:00
Todd Zullinger
d0191b8ca5 use %bash_completions_dir
A %bash_completions_dir macros was added to redhat-rpm-config recently¹.
It is available for all supported Fedora releases.  Define it if
missing, to support EL <= 9.

This is likely to become part of the packaging guideline soon².

¹ https://src.fedoraproject.org/rpms/redhat-rpm-config/c/483a3b (Add
  macros.shell-completions, 2022-06-25)
² https://pagure.io/packaging-committee/issue/1202
2022-11-12 13:37:15 -05:00
Todd Zullinger
ef75bcdbad update license data and convert to SPDX format
The license data was gathered from the 2.38.1 tarball.  The licensecheck
tool was run:

    find -type f -regextype egrep ! -regex '^(Documentation/.*\.txt$|(t/(chainlint|perf/p[0-9]{4}|t[0-9]{4}).*))' \
        -exec licensecheck --shortname-scheme spdx {} + | LANG=C sort >licensecheck

The contents were reviewed, removing files which are not shipped or were
UNKNOWN to licensecheck.  Of the UNKNOWN files, most lacked a specific
license header and are thus treated as GPL-2.0-only.  The code in
reftable/ is licensed as BSD 3-Clause per reftable/LICENSE.
2022-11-12 13:37:15 -05:00
Todd Zullinger
1ea41cbd46 don't ship contrib/persistent-https as documentation
This is Go source code which requires compilation to be used.  It is
licensed differently than git; shipping it changes the License tag.

Let's avoid it for now.  If it turns out to be widely used, we can
restore it later (and ship it in binary form).
2022-11-07 19:05:50 -05:00
Todd Zullinger
537938edaa update to 2.38.1 (CVE-2022-39253, CVE-2022-39260)
From the release notes for 2.30.6¹

   * CVE-2022-39253:
     When relying on the `--local` clone optimization, Git dereferences
     symbolic links in the source repository before creating hardlinks
     (or copies) of the dereferenced link in the destination repository.
     This can lead to surprising behavior where arbitrary files are
     present in a repository's `$GIT_DIR` when cloning from a malicious
     repository.

     Git will no longer dereference symbolic links via the `--local`
     clone mechanism, and will instead refuse to clone repositories that
     have symbolic links present in the `$GIT_DIR/objects` directory.

     Additionally, the value of `protocol.file.allow` is changed to be
     "user" by default.

   * CVE-2022-39260:
     An overly-long command string given to `git shell` can result in
     overflow in `split_cmdline()`, leading to arbitrary heap writes and
     remote code execution when `git shell` is exposed and the directory
     `$HOME/git-shell-commands` exists.

     `git shell` is taught to refuse interactive commands that are
     longer than 4MiB in size. `split_cmdline()` is hardened to reject
     inputs larger than 2GiB.

  Credit for finding CVE-2022-39253 goes to Cory Snider of Mirantis. The
  fix was authored by Taylor Blau, with help from Johannes Schindelin.

  Credit for finding CVE-2022-39260 goes to Kevin Backhouse of GitHub.
  The fix was authored by Kevin Backhouse, Jeff King, and Taylor Blau.

¹ https://github.com/git/git/raw/v2.38.1/Documentation/RelNotes/2.30.6.txt
2022-10-18 13:43:15 -04:00
Todd Zullinger
6e2a249aef lint: ignore non-standard-dir-in-var for gitweb
Newer rpmlint rightly points out this minor gitweb issue.

Fixing it is a low priority as we need to arrange the change only for
newer releases, keeping the old layout on existing systems.  This is
tracked in bug 479613.
2022-10-15 11:53:50 -04:00
Todd Zullinger
269487c604 update to 2.38.0
Release notes:
https://github.com/git/git/raw/v2.38.0/Documentation/RelNotes/2.38.0.txt
2022-10-03 15:21:28 -04:00
Todd Zullinger
202c5f9f24 update to 2.38.0-rc2
Release notes:
https://github.com/git/git/raw/v2.38.0-rc2/Documentation/RelNotes/2.38.0.txt
2022-09-28 00:18:42 -04:00
Todd Zullinger
588c4c7c7c lint: update filter rules
We removed '%{_emacs_version}' in 3395646 (remove --with/--without emacs
build conditional, 2022-06-13).  Drop the unnecessary filter from the
rpmlint config.

Add filters for several new checks in rpmlint 2.x: files-duplicate;
package-with-huge-docs; and potential-bashisms.

Also ignore unused-direct-shlib-dependency for libpcre2.  While this
is accurate, the additional linking would be tricky to remove from the
upstream Makefile.  It would almost certainly not be worth the effort.

Lastly (even though it's the first line in the file), drop the unneeded
'from Config import *' directive.  The rpmlint config is no longer
loaded directly as python code (yay!).
2022-09-22 00:38:15 -04:00
Todd Zullinger
047cf1702d git-subtree sub-package is noarch
In 986b772 (Split 'git subtree' into a separate package, 2018-02-07), I
mistakenly created the package as arch-specific.  It should have been
noarch; it is merely a shell script.
2022-09-22 00:38:09 -04:00
Todd Zullinger
35ed577d15 update to 2.38.0-rc1
Release notes:
https://github.com/git/git/raw/v2.38.0-rc1/Documentation/RelNotes/2.38.0.txt
2022-09-21 20:32:41 -04:00
Todd Zullinger
ea59aa3637 update to 2.38.0-rc0
Adjust number of t5541 "push 2000 tags over http" test, which we skip on
aarch64 and ppc64le arches.  It was shifted from 36 to 37 by upstream
b0c4adcdd7 (remote-curl: send Accept-Language header to server,
2022-07-11).

Release notes:
https://github.com/git/git/raw/v2.38.0-rc0/Documentation/RelNotes/2.38.0.txt
2022-09-21 11:42:57 -04:00
Todd Zullinger
0d294dd610 tests: try harder to find open ports for apache, git, and svn
When running multiple builds, we frequently see failures due to port
conflicts, particularly with httpd tests.  Retry with a different port
when the test function start_httpd() fails to reduce these spurious
failures.

We should not need to skip t9115-git-svn-dcommit-funky-renames as a
result.  Remove it from GIT_SKIP_TESTS.

Similarly, adjust the git-daemon and svnserve start functions.
2022-08-31 10:05:31 -04:00
Todd Zullinger
cbc4c3e411 remove %changelog entries prior to 2020
The git history serves as the repository for the old entries.  The
changelog was roughly 20% of the total lines in the spec file.
2022-08-30 21:10:43 -04:00
Todd Zullinger
c1a92d4bda update to 2.37.3
This is an upstream bugfix release.

Release notes:
https://github.com/git/git/raw/v2.37.3/Documentation/RelNotes/2.37.3.txt
2022-08-30 21:10:12 -04:00
Todd Zullinger
3bf0a72eb1 consolidate git-archimport removal in %prep
We have not shipped git-archimport since 3f0dc97 (Drop git-arch on
fedora >= 16, 2011-07-26).  Replace the scattered references to it in
the spec file with a small group of commands in %prep to remove it
entirely.
2022-08-14 14:13:49 -04:00
Todd Zullinger
5c57e78875 update to 2.37.2
This is an upstream bugfix release.

Release notes:
https://github.com/git/git/raw/v2.37.2/Documentation/RelNotes/2.37.2.txt
2022-08-11 14:22:53 -04:00
Todd Zullinger
3eb6f047dc require systemd-rpm-macros rather than systemd
The `BuildRequires: systemd` was added in d7389e7 (use systemd instead
of xinetd (bz 737183), 2013-04-30).  Since then, the systemd macros have
been split into a subpackage¹.  Adjust our BuildRequires (with an
exception for EL-7).

Replace `Requires*: systemd` in git-daemon with %{?systemd_requires}.

¹ https://src.fedoraproject.org/rpms/systemd/c/c9030f0 (Split out the
  rpm macros into systemd-rpm-macros subpackage, 2018-11-02),
2022-07-23 15:36:18 -04:00
Fedora Release Engineering
0266063d10 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-21 06:16:03 +00:00
Todd Zullinger
47478b1513 update to 2.37.1 (CVE-2022-29187)
From the release notes for 2.30.5¹:

    This release contains minor fix-ups for the changes that went into
    Git 2.30.3 and 2.30.4, addressing CVE-2022-29187.

     * The safety check that verifies a safe ownership of the Git
       worktree is now extended to also cover the ownership of the Git
       directory (and the `.git` file, if there is any).

    Carlo Marcelo Arenas Belón (1):
          setup: tighten ownership checks post CVE-2022-24765

Additionally, from the release notes for 2.37.1²:

     * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
       correctly record a removed file to the index, which is an old
       regression but has become widely known because the C version has
       become the default in the latest release.

¹ https://github.com/git/git/raw/v2.37.1/Documentation/RelNotes/2.30.5.txt
² https://github.com/git/git/raw/v2.37.1/Documentation/RelNotes/2.37.1.txt
2022-07-12 13:39:22 -04:00
Todd Zullinger
eab9894931 update to 2.37.0
Release notes:
https://github.com/git/git/raw/v2.37.0/Documentation/RelNotes/2.37.0.txt
2022-06-27 15:07:59 -04:00
Todd Zullinger
8b14c0b19f update to 2.37.0-rc2
Release notes:
https://github.com/git/git/raw/v2.37.0-rc2/Documentation/RelNotes/2.37.0.txt
2022-06-22 15:51:09 -04:00
Todd Zullinger
7d205ab48d update to 2.37.0-rc1
Add 'missing FSMONITOR_DAEMON' and 'You must set env var
GIT_TEST_ALLOW_SUDO=YES in order to run this test' to
git.skip-test-patterns to cover new test prerequisites.

Release notes:
https://github.com/git/git/raw/v2.37.0-rc1/Documentation/RelNotes/2.37.0.txt
2022-06-18 01:59:06 -04:00
Todd Zullinger
33956465a1 remove --with/--without emacs build conditional
The emacs bcond support was added cdea01a (drop emacs-git stub for
fedora >= 34 (#1882360), 2020-10-10).  Now that Fedora 34 is EOL, we no
longer need the conditional.
2022-06-14 13:31:54 -04:00
Todd Zullinger
70428fb2e8 fix GIT_SKIP_TESTS for EL8 s390x
The GIT_SKIP_TESTS variable does not support brace expansion.  It was my
mistake thinking that it did.  List the tests to skip properly.

If we had a longer list and *really* wanted to use brace expansion, we
could do something like this:

    GIT_SKIP_TESTS="$GIT_SKIP_TESTS $(echo t5300.{10,12,14} t5303.{5,7,11} t6300.{35,91,92})"

In this case, that's more characters _and_ more complexity, so it makes
no sense to use it.  (Even if it were shorter, it doesn't necessarily
justify the extra complexity.)

Expand the list of tests to skip to cover those which fail due to the
earlier skipped tests.

Additionally, GIT_SKIP_TESTS is (unintentionally) set on systems other
than EL8.  Fix the conditional to only skip these tests on s390x on EL8.
2022-06-14 13:31:54 -04:00
Todd Zullinger
81908fa387 update to 2.37.0-rc0
Release notes:
https://github.com/git/git/raw/v2.37.0-rc0/Documentation/RelNotes/2.37.0.txt
2022-06-14 03:16:56 -04:00
Jitka Plesnikova
a35db90ce1 Perl 5.36 re-rebuild of bootstrapped packages 2022-06-03 13:30:49 +02:00
Jitka Plesnikova
09bd4bb5d8 Perl 5.36 rebuild 2022-06-01 08:18:21 +02:00
Todd Zullinger
b76548f9c2 update to 2.36.1
Release notes:
https://github.com/git/git/raw/v2.36.1/Documentation/RelNotes/2.36.1.txt
2022-05-06 14:01:06 -04:00
Todd Zullinger
dbec023603 update to 2.36.0
Release notes:
https://github.com/git/git/raw/v2.36.0/Documentation/RelNotes/2.36.0.txt
2022-04-18 14:11:02 -04:00
Todd Zullinger
59a5ed4cff usability improvements on top of CVE-2022-24765
Per the release announcement¹, these patches...

    address usability issues in the recent releases 'v2.35.2',
    'v2.34.2', 'v2.33.2', 'v2.32.1', 'v2.31.2', and 'v2.30.3', where
    each "safe" directory has to be listed on the safe.directory
    configuration variables.  A broader escape hatch has been added so
    that the value '*' can be used to declare "my colleagues and their
    repositories I may ever visit are all trustworthy".

¹ https://lore.kernel.org/git/xmqq1qy04iqa.fsf@gitster.g/
2022-04-13 21:35:36 -04:00
Todd Zullinger
f0106d7c9a disable failing tests on s390x on EL8
These tests fail on s390x, but only with EL8.  They succeed on Fedora
and EL9.  This suggests the issue is not with git.  Skip them to avoid
blocking the Fedora releases which we care most about while still
allowing builds in COPR and elsewhere for all Fedora/EPEL releases.
2022-04-12 22:50:19 -04:00
Todd Zullinger
4787e39b40 update to 2.36.0-rc2 (CVE-2022-24765)
Regarding CVE-2022-24765, the release announcement says:

   On multi-user machines, Git users might find themselves
   unexpectedly in a Git worktree, e.g. when another user created a
   repository in `C:\.git`, in a mounted network drive or in a
   scratch space. Merely having a Git-aware prompt that runs `git
   status` (or `git diff`) and navigating to a directory which is
   supposedly not a Git worktree, or opening such a directory in an
   editor or IDE such as VS Code or Atom, will potentially run
   commands defined by that other user.

The new `safe.directory` setting may be used in either the system or
global configuration to list directories which git should consider safe
even if they are owned by someone other than the current user.

Release notes:
https://github.com/git/git/raw/v2.36.0-rc2/Documentation/RelNotes/2.36.0.txt
2022-04-12 21:04:04 -04:00
Todd Zullinger
d1736385d5 update to 2.36.0-rc1
Release notes:
https://github.com/git/git/raw/v2.36.0-rc1/Documentation/RelNotes/2.36.0.txt
2022-04-08 20:01:33 -04:00
Todd Zullinger
25830241e6 use httpd-core for tests on Fedora >= 37
The httpd package was slimmed down per rhbz#2070517.  Use the new
httpd-core package for the test suite requirements on F37+.

While here, adjust a nearby '# endif' comment to match reality.
2022-04-08 13:42:17 -04:00
Todd Zullinger
0b5afcebda update to 2.36.0-rc0
The %_package_note_file definition added in 1dc07e7 (set path to linker
script in %_package_note_file, 2022-01-24) does not support release
candidates.  Fix it.

Add 'fsmonitor--daemon is not supported on this platform' and 'missing
!REFFILES' to  git.skip-test-patterns to match new test prerequisites
which are not relevant for our builds.

Adjust number of t5541 "push 2000 tags over http" test.  It was shifted
from 35 to 36 by upstream c36c62859a (tests: use "test_hook" for misc
"mkdir -p" and "chmod" cases, 2022-03-17).

Replace `%__make test` with `%__make -C t all` to avoid re-compiling in
%check.  This is an issue I have yet to fully diagnose.  I suspect that
it is related to the nice work Ævar Arnfjörð Bjarmason has done upstream
to improve the efficiency and correctness of the build process.  Work
around it for the moment.

Release notes:
https://github.com/git/git/raw/v2.36.0-rc0/Documentation/RelNotes/2.36.0.txt
2022-04-08 13:40:42 -04:00
Todd Zullinger
9e214cd4d0 update to 2.35.1
Per the upstream release notes¹:

    Git 2.35 shipped with a regression that broke use of "rebase" and
    "stash" in a secondary worktree.  This maintenance release ought to
    fix it.

¹ https://github.com/git/git/raw/v2.35.1/Documentation/RelNotes/2.35.1.txt
2022-01-29 00:20:45 -05:00
Todd Zullinger
1dc07e7d5d set path to linker script in %_package_note_file
The package-notes feature¹ creates a linker script in %{buildsubdir}.
Unfortunately, %{buildsubdir} is not set in %prep, leaving us with an
incorrect path to the linker script.  The build then fails with:

   /usr/bin/ld: cannot open linker script file
   /builddir/build/BUILD/.package_note-git-2.35.0-0.2.rc2.fc36.3.x86_64.ld:
   No such file or directory

Set the path to the linker script via %_package_note_file, per
suggestion by Zbigniew Jędrzejewski-Szmek².

References:
¹ https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects
² https://bugzilla.redhat.com/2044028#c10
2022-01-24 17:40:26 -05:00
Todd Zullinger
4eb061b209 update to 2.35.0
Release notes:
https://github.com/git/git/raw/v2.35.0/Documentation/RelNotes/2.35.0.txt
2022-01-24 15:31:20 -05:00
Todd Zullinger
32a3ec7045 remove contrib/scalar to avoid cruft in git-core-doc
The scalar command is being worked on incrementally upstream.

As it matures, we may consider building and distributing it.  Whether
that will happen before it graduates from contrib or not is anyone's
guess.

For the moment, remove it to avoid cruft in git-core-doc.
2022-01-22 12:49:44 -05:00
Todd Zullinger
601fe503aa fix compilation on EL7
Git now requires C99 support and a zlib with uncompress2 by default.

On EL7, gcc-4.8.5 requires a flag to enable C99 support.

Compilation also fails without -fPIC on EL7, for reasons of which I am
not entirely clear.  (I do not like making a change I cannot justify or
explain properly, but it is better than dropping EL7 support until I
have time to learn the reason(s).)

Update the %build_cflags macro when building on EL7 to enable C99
support and set -fPIC.

Define NO_UNCOMPRESS2 to use compat/zlib-uncompress2.c.
2022-01-22 12:04:42 -05:00
Todd Zullinger
ce97e98127 checkout: avoid BUG() when hitting a broken repository (rhbz#2042920)
The git checkout command crashes when run multiple times, if
`.git/refs/remotes/origin/HEAD` is manually copied into
`.git/refs/heads/$branch-name`.

Strictly, this is repository corruption, but it has been silently
tolerated until upstream 9081a421 (checkout: fix "branch info" memory
leaks, 2021-11-16), which added some sanity checking of the data.

Loosen the check via Junio's upstream commit 519947b69a (checkout: avoid
BUG() when hitting a broken repository, 2022-01-21).
2022-01-22 11:59:10 -05:00
Todd Zullinger
a8bfca0241 update to 2.35.0-rc2
Release notes:
https://github.com/git/git/raw/v2.35.0-rc2/Documentation/RelNotes/2.35.0.txt
2022-01-19 18:02:12 -05:00
Todd Zullinger
9d7a08be77 update to 2.35.0-rc1
Release notes:
https://github.com/git/git/raw/v2.35.0-rc1/Documentation/RelNotes/2.35.0.txt
2022-01-14 20:04:04 -05:00
Todd Zullinger
ef2bab7f59 update to 2.35.0-rc0
Add openssh-clients BuildRequires, for ssh-add.  Upstream 350a2518c8
(ssh signing: support non ssh-* keytypes, 2021-11-19), added `ssh-add`
as a requirement of t7528-signed-commit-ssh's "sign commits using
literal public keys with ssh-agent" test.

Replace the openssh BR added in e8896ce (update to 2.34.0, 2021-11-15)
with openssh-clients.  The latter requires the former.

Apply Taylor Blau's patch to fix a use-after-free bug in fmt-merge-msg¹.

Add `missing !LONG_IS_64BIT,EXPENSIVE` to git.skip-test-patterns.  It is
used in t1051-large-conversion after upstream 596b5e77c9 (clean/smudge:
allow clean filters to process extremely large files, 2021-11-02).

Release notes:
https://github.com/git/git/raw/v2.35.0-rc0/Documentation/RelNotes/2.35.0.txt

¹ https://lore.kernel.org/git/CAHk-=whXPxWL7z3GiPkaDt+yygrRmagrYUnib7Lx=Vvrqx2ufg@mail.gmail.com/
2022-01-10 22:14:13 -05:00
15 changed files with 1016 additions and 594 deletions

View file

@ -1,47 +0,0 @@
From e155951262e6dea419db8b9010342b08b487f96a Mon Sep 17 00:00:00 2001
From: Todd Zullinger <tmz@pobox.com>
Date: Thu, 25 Nov 2021 05:05:08 -0500
Subject: [PATCH] t/lib-gpg: use --with-colons when parsing gpgsm output
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The output of `gpgsm -K` changed in gnupg-2.3¹, breaking the parsing
used by the GPGSM prereq.
Use the `--with-colons` options for stable, machine-parseable output.
This allows the grep/cut/tr pipeline (and the subsequent echo which
appends ' S relax') to be replaced with a single call to awk to create
the ${GNUPGHOME}/trustlist.txt file.
¹ https://dev.gnupg.org/rGe7d70923901e is the change in 2.3, while
https://dev.gnupg.org/rG9c57de75cf36 is the similar change in 2.2.
The latter says: Here in 2.2 we keep the string "fingerprint:" and no
not change it to "sha1 fpr" as we did in master (2.3). (sic)
Signed-off-by: Todd Zullinger <tmz@pobox.com>
---
t/lib-gpg.sh | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh
index a3f285f515..cbbf74e725 100644
--- a/t/lib-gpg.sh
+++ b/t/lib-gpg.sh
@@ -72,12 +72,10 @@ test_lazy_prereq GPGSM '
--passphrase-fd 0 --pinentry-mode loopback \
--import "$TEST_DIRECTORY"/lib-gpg/gpgsm_cert.p12 &&
- gpgsm --homedir "${GNUPGHOME}" -K |
- grep fingerprint: |
- cut -d" " -f4 |
- tr -d "\\n" >"${GNUPGHOME}/trustlist.txt" &&
+ gpgsm --homedir "${GNUPGHOME}" -K --with-colons |
+ awk -F ":" "/^fpr:/ {printf \"%s S relax\\n\", \$10}" \
+ >"${GNUPGHOME}/trustlist.txt" &&
- echo " S relax" >>"${GNUPGHOME}/trustlist.txt" &&
echo hello | gpgsm --homedir "${GNUPGHOME}" >/dev/null \
-u committer@example.com -o /dev/null --sign -
'

View file

@ -0,0 +1,73 @@
From 89ccbc15948db9ddbf74530e3fd66dd78ae897ae Mon Sep 17 00:00:00 2001
From: Todd Zullinger <tmz@pobox.com>
Date: Sun, 21 Aug 2022 13:49:57 -0400
Subject: [PATCH] t/lib-httpd: try harder to find a port for apache
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When running multiple builds concurrently, tests which run daemons, like
apache httpd, sometimes conflict with each other, leading to spurious
failures:
++ /usr/sbin/httpd -d '/tmp/git-t.ck9I/trash directory.t9118-git-svn-funky-branch-names/httpd' \
-f /builddir/build/BUILD/git-2.37.2/t/lib-httpd/apache.conf -DDAV -DSVN -c 'Listen 127.0.0.1:9118' \
-k start
(98)Address already in use: AH00072: make_sock: could not bind to address 127.0.0.1:9118
no listening sockets available, shutting down
AH00015: Unable to open logs
++ test 1 -ne 0
Try a bit harder to find an open port to use to avoid these intermittent
failures. If we fail to start httpd, increment the port number and try
again. By default, we make 3 attempts. This may be overridden by
setting GIT_TEST_START_HTTPD_TRIES to a different value.
Helped-by: Ondřej Pohořelský <opohorel@redhat.com>
Signed-off-by: Todd Zullinger <tmz@pobox.com>
---
t/lib-httpd.sh | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh
index 2fb1b2ae56..4afdf5a6aa 100644
--- a/t/lib-httpd.sh
+++ b/t/lib-httpd.sh
@@ -206,19 +206,26 @@ enable_cgipassauth () {
}
start_httpd() {
- prepare_httpd >&3 2>&4
-
test_atexit stop_httpd
- "$LIB_HTTPD_PATH" -d "$HTTPD_ROOT_PATH" \
- -f "$TEST_PATH/apache.conf" $HTTPD_PARA \
- -c "Listen 127.0.0.1:$LIB_HTTPD_PORT" -k start \
- >&3 2>&4
- if test $? -ne 0
- then
- cat "$HTTPD_ROOT_PATH"/error.log >&4 2>/dev/null
- test_skip_or_die GIT_TEST_HTTPD "web server setup failed"
- fi
+ i=0
+ while test $i -lt ${GIT_TEST_START_HTTPD_TRIES:-3}
+ do
+ i=$(($i + 1))
+ prepare_httpd >&3 2>&4
+ say >&3 "Starting httpd on port $LIB_HTTPD_PORT"
+ "$LIB_HTTPD_PATH" -d "$HTTPD_ROOT_PATH" \
+ -f "$TEST_PATH/apache.conf" $HTTPD_PARA \
+ -c "Listen 127.0.0.1:$LIB_HTTPD_PORT" -k start \
+ >&3 2>&4
+ test $? -eq 0 && return
+ LIB_HTTPD_PORT=$(($LIB_HTTPD_PORT + 1))
+ export LIB_HTTPD_PORT
+ # clean up modules symlink, prepare_httpd will re-create it
+ rm -f "$HTTPD_ROOT_PATH/modules"
+ done
+ cat "$HTTPD_ROOT_PATH"/error.log >&4 2>/dev/null
+ test_skip_or_die GIT_TEST_HTTPD "web server setup failed"
}
stop_httpd() {

View file

@ -0,0 +1,88 @@
From e90e1068ddc9cfa3badd23b16a46c57ed6d8308a Mon Sep 17 00:00:00 2001
From: Todd Zullinger <tmz@pobox.com>
Date: Fri, 26 Aug 2022 18:28:44 -0400
Subject: [PATCH] t/lib-git-daemon: try harder to find a port
As with the previous commit, try harder to find an open port to avoid
intermittent failures on busy/shared build systems.
By default, we make 3 attempts. This may be overridden by setting
GIT_TEST_START_GIT_DAEMON_TRIES to a different value.
Signed-off-by: Todd Zullinger <tmz@pobox.com>
---
t/lib-git-daemon.sh | 60 ++++++++++++++++++++++++++++-----------------
1 file changed, 37 insertions(+), 23 deletions(-)
diff --git a/t/lib-git-daemon.sh b/t/lib-git-daemon.sh
index e62569222b..c3e8dda9ff 100644
--- a/t/lib-git-daemon.sh
+++ b/t/lib-git-daemon.sh
@@ -51,30 +51,44 @@ start_git_daemon() {
registered_stop_git_daemon_atexit_handler=AlreadyDone
fi
- say >&3 "Starting git daemon ..."
- mkfifo git_daemon_output
- ${LIB_GIT_DAEMON_COMMAND:-git daemon} \
- --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \
- --reuseaddr --verbose --pid-file="$GIT_DAEMON_PIDFILE" \
- --base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
- "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
- >&3 2>git_daemon_output &
- GIT_DAEMON_PID=$!
- {
- read -r line <&7
- printf "%s\n" "$line" >&4
- cat <&7 >&4 &
- } 7<git_daemon_output &&
+ i=0
+ while test $i -lt ${GIT_TEST_START_GIT_DAEMON_TRIES:-3}
+ do
+ say >&3 "Starting git daemon on port $LIB_GIT_DAEMON_PORT ..."
+ mkfifo git_daemon_output
+ ${LIB_GIT_DAEMON_COMMAND:-git daemon} \
+ --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \
+ --reuseaddr --verbose --pid-file="$GIT_DAEMON_PIDFILE" \
+ --base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
+ "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
+ >&3 2>git_daemon_output &
+ GIT_DAEMON_PID=$!
+ {
+ read -r line <&7
+ printf "%s\n" "$line" >&4
+ cat <&7 >&4 &
+ } 7<git_daemon_output &&
- # Check expected output
- if test x"$(expr "$line" : "\[[0-9]*\] \(.*\)")" != x"Ready to rumble"
- then
- kill "$GIT_DAEMON_PID"
- wait "$GIT_DAEMON_PID"
- unset GIT_DAEMON_PID
- test_skip_or_die GIT_TEST_GIT_DAEMON \
- "git daemon failed to start"
- fi
+ # Check expected output
+ output="$(expr "$line" : "\[[0-9]*\] \(.*\)")"
+ # Return if found
+ test x"$output" = x"Ready to rumble" && return
+ # Increment port for retry if not found
+ LIB_GIT_DAEMON_PORT=$(($LIB_GIT_DAEMON_PORT + 1))
+ export LIB_GIT_DAEMON_PORT
+ GIT_DAEMON_HOST_PORT=127.0.0.1:$LIB_GIT_DAEMON_PORT
+ GIT_DAEMON_URL=git://$GIT_DAEMON_HOST_PORT
+ # unset GIT_DAEMON_PID; remove the fifo & pid file
+ GIT_DAEMON_PID=
+ rm -f git_daemon_output "$GIT_DAEMON_PIDFILE"
+ done
+
+ # Clean up and return failure
+ kill "$GIT_DAEMON_PID"
+ wait "$GIT_DAEMON_PID"
+ unset GIT_DAEMON_PID
+ test_skip_or_die GIT_TEST_GIT_DAEMON \
+ "git daemon failed to start"
}
stop_git_daemon() {

View file

@ -1,31 +0,0 @@
From 93299b9b221da01d4055528f7c760d04ee83b82b Mon Sep 17 00:00:00 2001
From: Todd Zullinger <tmz@pobox.com>
Date: Thu, 25 Nov 2021 08:07:32 -0500
Subject: [PATCH] t/lib-gpg: reload gpg components after updating trustlist
With gpgsm from gnupg-2.3, the changes to the trustlist.txt do not
appear to be picked up without refreshing the gpg-agent. Use the 'all'
keyword to reload all of the gpg components. The scdaemon is started as
a child of gpg-agent, for example.
We used to have a --kill at this spot, but I removed it in 2e285e7803
(t/lib-gpg: drop redundant killing of gpg-agent, 2019-02-07). It seems
like it might be necessary (again) for 2.3.
Signed-off-by: Todd Zullinger <tmz@pobox.com>
---
t/lib-gpg.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh
index cbbf74e725..d675698a2d 100644
--- a/t/lib-gpg.sh
+++ b/t/lib-gpg.sh
@@ -75,6 +75,7 @@ test_lazy_prereq GPGSM '
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 -

View file

@ -0,0 +1,85 @@
From 41423d666fd52eaa6aa2b44a0de1b81d0857ca06 Mon Sep 17 00:00:00 2001
From: Todd Zullinger <tmz@pobox.com>
Date: Fri, 26 Aug 2022 18:28:44 -0400
Subject: [PATCH] t/lib-git-svn: try harder to find a port
As with the previous commits, try harder to find an open port to avoid
intermittent failures on busy/shared build systems.
By default, we make 3 attempts. This may be overridden by setting
GIT_TEST_START_SVNSERVE_TRIES to a different value.
Run svnserve in daemon mode and use 'test_atexit' to stop it. This is
cleaner than running in the foreground with --listen-once and having to
manage the PID ourselves.
Signed-off-by: Todd Zullinger <tmz@pobox.com>
---
t/lib-git-svn.sh | 34 +++++++++++++++++++++++++----
t/t9113-git-svn-dcommit-new-file.sh | 1 -
2 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
index ea28971e8e..04e660e2ba 100644
--- a/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -17,6 +17,7 @@ fi
GIT_DIR=$PWD/.git
GIT_SVN_DIR=$GIT_DIR/svn/refs/remotes/git-svn
SVN_TREE=$GIT_SVN_DIR/svn-tree
+SVNSERVE_PIDFILE="$PWD"/daemon.pid
test_set_port SVNSERVE_PORT
svn >/dev/null 2>&1
@@ -119,10 +120,35 @@ require_svnserve () {
}
start_svnserve () {
- svnserve --listen-port $SVNSERVE_PORT \
- --root "$rawsvnrepo" \
- --listen-once \
- --listen-host 127.0.0.1 &
+ test_atexit stop_svnserve
+
+ i=0
+ while test $i -lt ${GIT_TEST_START_SVNSERVE_TRIES:-3}
+ do
+ say >&3 "Starting svnserve on port $SVNSERVE_PORT ..."
+ svnserve --listen-port $SVNSERVE_PORT \
+ --root "$rawsvnrepo" \
+ --daemon --pid-file="$SVNSERVE_PIDFILE" \
+ --listen-host 127.0.0.1
+ ret=$?
+ # increment port and retry if unsuccessful
+ if test $ret -ne 0
+ then
+ SVNSERVE_PORT=$(($SVNSERVE_PORT + 1))
+ export SVNSERVE_PORT
+ else
+ break
+ fi
+ done
+}
+
+stop_svnserve () {
+ say >&3 "Stopping svnserve ..."
+ SVNSERVE_PID="$(cat "$SVNSERVE_PIDFILE")"
+ if test -n "$SVNSERVE_PID"
+ then
+ kill "$SVNSERVE_PID" 2>/dev/null
+ fi
}
prepare_utf8_locale () {
diff --git a/t/t9113-git-svn-dcommit-new-file.sh b/t/t9113-git-svn-dcommit-new-file.sh
index e8479cec7a..5925891f5d 100755
--- a/t/t9113-git-svn-dcommit-new-file.sh
+++ b/t/t9113-git-svn-dcommit-new-file.sh
@@ -28,7 +28,6 @@ test_expect_success 'create files in new directory with dcommit' "
echo hello > git-new-dir/world &&
git update-index --add git-new-dir/world &&
git commit -m hello &&
- start_svnserve &&
git svn dcommit
"

View file

@ -1,40 +0,0 @@
From da340dd76714474126f73f6b53087da0ffd4e8d8 Mon Sep 17 00:00:00 2001
From: Todd Zullinger <tmz@pobox.com>
Date: Fri, 26 Nov 2021 21:11:54 -0500
Subject: [PATCH] t/lib-gpg: kill all gpg components, not just gpg-agent
The gpg-agent is one of several processes that newer releases of GnuPG
start automatically. Issue a kill to each of them to ensure they do not
affect separate tests. (Yes, the separate GNUPGHOME should do that
already. If we find that is case, we could drop the --kill entirely.)
In terms of compatibility, the 'all' keyword was added to the --kill &
--reload options in GnuPG 2.1.18. Debian and RHEL are often used as
indicators of how a change might affect older systems we often try to
support.
- Debian Strech (old old stable), which has limited security support
until June 2022, has GnuPG 2.1.18 (or 2.2.x in backports).
- CentOS/RHEL 7, which is supported until June 2024, has GnuPG
2.0.22, which lacks the --kill option, so the change won't have
any impact.
Signed-off-by: Todd Zullinger <tmz@pobox.com>
---
t/lib-gpg.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh
index d675698a2d..2bb309a8c1 100644
--- a/t/lib-gpg.sh
+++ b/t/lib-gpg.sh
@@ -40,7 +40,7 @@ test_lazy_prereq GPG '
# > lib-gpg/ownertrust
mkdir "$GNUPGHOME" &&
chmod 0700 "$GNUPGHOME" &&
- (gpgconf --kill gpg-agent || : ) &&
+ (gpgconf --kill all || : ) &&
gpg --homedir "${GNUPGHOME}" --import \
"$TEST_DIRECTORY"/lib-gpg/keyring.gpg &&
gpg --homedir "${GNUPGHOME}" --import-ownertrust \

View file

@ -1,33 +0,0 @@
From d1efcac68414b80cc0fd7b7e3b4781f313d98697 Mon Sep 17 00:00:00 2001
From: Todd Zullinger <tmz@pobox.com>
Date: Sat, 27 Nov 2021 05:31:13 -0500
Subject: [PATCH] t4202: match gpgsm output from GnuPG 2.3
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In GnuPG 2.3, the output from gpgsm when a certificate is not found
differs from that of earlier versions. This appears to be a bug¹, but
there are several releases in use now which have this output. Extend
the grep pattern to catch it rather than failing the test.
¹ https://lists.gnupg.org/pipermail/gnupg-devel/2021-November/034991.html
Signed-off-by: Todd Zullinger <tmz@pobox.com>
---
t/t4202-log.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index 7884e3d46b..c69f9ac469 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -1851,7 +1851,7 @@ test_expect_success GPGSM 'log --graph --show-signature for merged tag x509 miss
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 "^| | gpgsm: certificate not found" actual
+ grep -Ei "^| | gpgsm:( failed to find the)? certificate:? not found" actual
'
test_expect_success GPGSM 'log --graph --show-signature for merged tag x509 bad signature' '

View file

@ -1,48 +0,0 @@
From edb5eafc9945b2d400c2d777a9750cee06ab500f Mon Sep 17 00:00:00 2001
From: Todd Zullinger <tmz@pobox.com>
Date: Sat, 27 Nov 2021 02:55:47 -0500
Subject: [PATCH] gpg-interface: match SIG_CREATED if it's the first line
In `sign_buffer_gpg`, "\n[GNUPG:] SIG_CREATED " in the gpg status output
is used to signal a successful signature. This fails if "SIG_CREATED"
is the first line in the gpg output, as is the case with `gpgsm` in
GnuPG 2.3.
In earlier versions of GnuPG, there was a debug line in the `gpgsm`
output which allowed the check in `sign_buffer_gpg` to work. This debug
line was removed from GnuPG in a6d2f3133 (sm: Replace some debug message
by log_error or log_info, 2020-04-21).
The result is the `gpgsm --status-fd` output for a signing operation
starts with "[GNUPG:] SIG_CREATED" and we mistakenly report "gpg failed
to sign the data" to the user. The `gpg` command has other `[GNUPG:]`
output for signing operations, so it is not affected by this issue.
It's best not to rely on something as subtle and out of our control as
the order if the gnupg status messages.
This likely went unnoticed because the GPGSM test prereq was failing for
a different reason with GnuPG 2.3. No tests failed, they were simply
skipped due to the missing GPGSM prereq.
Signed-off-by: Todd Zullinger <tmz@pobox.com>
---
gpg-interface.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/gpg-interface.c b/gpg-interface.c
index 3e7255a2a9..d179dfb3ab 100644
--- a/gpg-interface.c
+++ b/gpg-interface.c
@@ -859,6 +859,12 @@ static int sign_buffer_gpg(struct strbuf *buffer, struct strbuf *signature,
bottom = signature->len;
+ /*
+ * Ensure gpg_status begins with a newline or we'll fail to match if
+ * the SIG_CREATED line is at the start of the gpg output.
+ */
+ strbuf_addch(&gpg_status, '\n');
+
/*
* When the username signingkey is bad, program could be terminated
* because gpg exits without reading and then write gets SIGPIPE.

View file

@ -0,0 +1,275 @@
From 65e88e659008e2cbf79cf44975406ff0d569a3a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= <opohorel@redhat.com>
Date: Thu, 20 Nov 2025 12:24:59 +0100
Subject: [PATCH] sideband: mask control characters
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The output of `git clone` is a vital component for understanding what
has happened when things go wrong. However, these logs are partially
under the control of the remote server (via the "sideband", which
typically contains what the remote `git pack-objects` process sends to
`stderr`), and is currently not sanitized by Git.
This makes Git susceptible to ANSI escape sequence injection (see
CWE-150, https://cwe.mitre.org/data/definitions/150.html), which allows
attackers to corrupt terminal state, to hide information, and even to
insert characters into the input buffer (i.e. as if the user had typed
those characters).
To plug this vulnerability, disallow any control character in the
sideband, replacing them instead with the common `^<letter/symbol>`
(e.g. `^[` for `\x1b`, `^A` for `\x01`).
There is likely a need for more fine-grained controls instead of using a
"heavy hammer" like this, which will be introduced subsequently.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
sideband: introduce an "escape hatch" to allow control characters
The preceding commit fixed the vulnerability whereas sideband messages
(that are under the control of the remote server) could contain ANSI
escape sequences that would be sent to the terminal verbatim.
However, this fix may not be desirable under all circumstances, e.g.
when remote servers deliberately add coloring to their messages to
increase their urgency.
To help with those use cases, give users a way to opt-out of the
protections: `sideband.allowControlCharacters`.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
sideband: do allow ANSI color sequences by default
The preceding two commits introduced special handling of the sideband
channel to neutralize ANSI escape sequences before sending the payload
to the terminal, and `sideband.allowControlCharacters` to override that
behavior.
However, some `pre-receive` hooks that are actively used in practice
want to color their messages and therefore rely on the fact that Git
passes them through to the terminal.
In contrast to other ANSI escape sequences, it is highly unlikely that
coloring sequences can be essential tools in attack vectors that mislead
Git users e.g. by hiding crucial information.
Therefore we can have both: Continue to allow ANSI coloring sequences to
be passed to the terminal, and neutralize all other ANSI escape
sequences.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
sideband: default to allowControlCharacters=true
We don't want to change the default Git behaviour, just add the option
to filter control characters.
Signed-off-by: Ondřej Pohořelský <opohorel@redhat.com>
---
Documentation/config.adoc | 2 +
Documentation/config/sideband.adoc | 16 ++++++
sideband.c | 78 ++++++++++++++++++++++++++++-
t/t5409-colorize-remote-messages.sh | 31 ++++++++++++
4 files changed, 125 insertions(+), 2 deletions(-)
create mode 100644 Documentation/config/sideband.adoc
diff --git a/Documentation/config.adoc b/Documentation/config.adoc
index 62eebe7c54..dcea3c0c15 100644
--- a/Documentation/config.adoc
+++ b/Documentation/config.adoc
@@ -523,6 +523,8 @@ include::config/sequencer.adoc[]
include::config/showbranch.adoc[]
+include::config/sideband.adoc[]
+
include::config/sparse.adoc[]
include::config/splitindex.adoc[]
diff --git a/Documentation/config/sideband.adoc b/Documentation/config/sideband.adoc
new file mode 100644
index 0000000000..c9ba24a02c
--- /dev/null
+++ b/Documentation/config/sideband.adoc
@@ -0,0 +1,16 @@
+sideband.allowControlCharacters::
+ By default, control characters that are delivered via the sideband
+ are NOT masked. Use this config setting to prevent potentially
+ unwanted ANSI escape sequences from being sent to the terminal:
++
+--
+ color::
+ Allow ANSI color sequences, line feeds and horizontal tabs,
+ but mask all other control characters.
+ false::
+ Mask all control characters other than line feeds and
+ horizontal tabs.
+ true::
+ Allow all control characters to be sent to the terminal.
+ This is the default.
+--
\ No newline at end of file
diff --git a/sideband.c b/sideband.c
index ea7c25211e..88d1b44a7a 100644
--- a/sideband.c
+++ b/sideband.c
@@ -26,6 +26,12 @@ static struct keyword_entry keywords[] = {
{ "error", GIT_COLOR_BOLD_RED },
};
+static enum {
+ ALLOW_NO_CONTROL_CHARACTERS = 0,
+ ALLOW_ALL_CONTROL_CHARACTERS = 1,
+ ALLOW_ANSI_COLOR_SEQUENCES = 2
+} allow_control_characters = ALLOW_ALL_CONTROL_CHARACTERS;
+
/* Returns a color setting (GIT_COLOR_NEVER, etc). */
static enum git_colorbool use_sideband_colors(void)
{
@@ -39,6 +45,25 @@ static enum git_colorbool use_sideband_colors(void)
if (use_sideband_colors_cached != GIT_COLOR_UNKNOWN)
return use_sideband_colors_cached;
+ switch (repo_config_get_maybe_bool(the_repository, "sideband.allowcontrolcharacters", &i)) {
+ case 0: /* Boolean value */
+ allow_control_characters = i ? ALLOW_ALL_CONTROL_CHARACTERS :
+ ALLOW_NO_CONTROL_CHARACTERS;
+ break;
+ case -1: /* non-Boolean value */
+ if (repo_config_get_string_tmp(the_repository, "sideband.allowcontrolcharacters",
+ &value))
+ ; /* huh? `get_maybe_bool()` returned -1 */
+ else if (!strcmp(value, "color"))
+ allow_control_characters = ALLOW_ANSI_COLOR_SEQUENCES;
+ else
+ warning(_("unrecognized value for `sideband."
+ "allowControlCharacters`: '%s'"), value);
+ break;
+ default:
+ break; /* not configured */
+ }
+
if (!repo_config_get_string_tmp(the_repository, key, &value))
use_sideband_colors_cached = git_config_colorbool(key, value);
else if (!repo_config_get_string_tmp(the_repository, "color.ui", &value))
@@ -66,6 +91,55 @@ void list_config_color_sideband_slots(struct string_list *list, const char *pref
list_config_item(list, prefix, keywords[i].keyword);
}
+static int handle_ansi_color_sequence(struct strbuf *dest, const char *src, int n)
+{
+ int i;
+
+ /*
+ * Valid ANSI color sequences are of the form
+ *
+ * ESC [ [<n> [; <n>]*] m
+ */
+
+ if (allow_control_characters != ALLOW_ANSI_COLOR_SEQUENCES ||
+ n < 3 || src[0] != '\x1b' || src[1] != '[')
+ return 0;
+
+ for (i = 2; i < n; i++) {
+ if (src[i] == 'm') {
+ strbuf_add(dest, src, i + 1);
+ return i;
+ }
+ if (!isdigit(src[i]) && src[i] != ';')
+ break;
+ }
+
+ return 0;
+}
+
+static void strbuf_add_sanitized(struct strbuf *dest, const char *src, int n)
+{
+ int i;
+
+ if (allow_control_characters == ALLOW_ALL_CONTROL_CHARACTERS) {
+ strbuf_add(dest, src, n);
+ return;
+ }
+
+ strbuf_grow(dest, n);
+ for (; n && *src; src++, n--) {
+ if (!iscntrl(*src) || *src == '\t' || *src == '\n')
+ strbuf_addch(dest, *src);
+ else if ((i = handle_ansi_color_sequence(dest, src, n))) {
+ src += i;
+ n -= i;
+ } else {
+ strbuf_addch(dest, '^');
+ strbuf_addch(dest, 0x40 + *src);
+ }
+ }
+}
+
/*
* Optionally highlight one keyword in remote output if it appears at the start
* of the line. This should be called for a single line only, which is
@@ -81,7 +155,7 @@ static void maybe_colorize_sideband(struct strbuf *dest, const char *src, int n)
int i;
if (!want_color_stderr(use_sideband_colors())) {
- strbuf_add(dest, src, n);
+ strbuf_add_sanitized(dest, src, n);
return;
}
@@ -114,7 +188,7 @@ static void maybe_colorize_sideband(struct strbuf *dest, const char *src, int n)
}
}
- strbuf_add(dest, src, n);
+ strbuf_add_sanitized(dest, src, n);
}
diff --git a/t/t5409-colorize-remote-messages.sh b/t/t5409-colorize-remote-messages.sh
index fa5de4500a..2d40d8c640 100755
--- a/t/t5409-colorize-remote-messages.sh
+++ b/t/t5409-colorize-remote-messages.sh
@@ -98,4 +98,35 @@ test_expect_success 'fallback to color.ui' '
grep "<BOLD;RED>error<RESET>: error" decoded
'
+test_expect_success 'disallow (color) control sequences in sideband' '
+ write_script .git/color-me-surprised <<-\EOF &&
+ printf "error: Have you \\033[31mread\\033[m this?\\a\\n" >&2
+ exec "$@"
+ EOF
+ test_config_global uploadPack.packObjectshook ./color-me-surprised &&
+ test_commit need-at-least-one-commit &&
+
+ git -c sideband.allowControlCharacters=color \
+ clone --no-local . throw-away 2>stderr &&
+ test_decode_color <stderr >decoded &&
+ test_grep RED decoded &&
+ test_grep "\\^G" stderr &&
+ tr -dc "\\007" <stderr >actual &&
+ test_must_be_empty actual &&
+
+ rm -rf throw-away &&
+ git -c sideband.allowControlCharacters=false \
+ clone --no-local . throw-away 2>stderr &&
+ test_decode_color <stderr >decoded &&
+ test_grep ! RED decoded &&
+ test_grep "\\^G" stderr &&
+
+ rm -rf throw-away &&
+ git -c sideband.allowControlCharacters clone --no-local . throw-away 2>stderr &&
+ test_decode_color <stderr >decoded &&
+ test_grep RED decoded &&
+ tr -dc "\\007" <stderr >actual &&
+ test_file_not_empty actual
+'
+
test_done
--
2.51.1

View file

@ -0,0 +1,14 @@
diff -ur b/t/lib-httpd/apache.conf a/t/lib-httpd/apache.conf
--- b/t/lib-httpd/apache.conf 2024-01-09 11:06:46.660868023 +0100
+++ a/t/lib-httpd/apache.conf 2024-01-09 11:09:09.572713625 +0100
@@ -272,7 +272,9 @@
<IfDefine DAV>
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
-
+ <IfDirective DavLockDBType>
+ DavLockDBType sdbm
+ </IfDirective>
DAVLockDB DAVLock
<Location /dumb/>
Dav on

View file

@ -1,5 +1,3 @@
from Config import *
# the dictionary is a bit limited # the dictionary is a bit limited
addFilter("git.* spelling-error %description .* subpackages") addFilter("git.* spelling-error %description .* subpackages")
addFilter("git-subtree.* spelling-error %description .* (subdirectory|subproject|subtree)") addFilter("git-subtree.* spelling-error %description .* (subdirectory|subproject|subtree)")
@ -7,6 +5,9 @@ addFilter("git-subtree.* spelling-error %description .* (subdirectory|subproject
# git-core-doc requires git-core, which provides the symlink target # git-core-doc requires git-core, which provides the symlink target
addFilter("git(-core-doc)?\..*: W: dangling-relative-symlink /usr/share/doc/git/contrib/hooks ../../../git-core/contrib/hooks") addFilter("git(-core-doc)?\..*: W: dangling-relative-symlink /usr/share/doc/git/contrib/hooks ../../../git-core/contrib/hooks")
# gitk requires git, which provides the symlink target
addFilter("gitk\.noarch: W: dangling-relative-symlink /usr/share/bash-completion/completions/gitk git")
# git-gui requires git, which provides the git binary # git-gui requires git, which provides the git binary
addFilter("git-gui.noarch: W: desktopfile-without-binary /usr/share/applications/git-gui.desktop git") addFilter("git-gui.noarch: W: desktopfile-without-binary /usr/share/applications/git-gui.desktop git")
@ -23,5 +24,19 @@ addFilter("git-core\..*: W: no-manual-page-for-binary")
# similarly ignore the warning when git-cvs and git-p4 are disabled # similarly ignore the warning when git-cvs and git-p4 are disabled
addFilter("git.* obsolete-not-provided git-(cvs|gnome-keyring|p4)") addFilter("git.* obsolete-not-provided git-(cvs|gnome-keyring|p4)")
# we BR emacs which requires emacs-common and provides %{_emacs_version} # git-svn has both man and html docs and only a single command
addFilter("git.(spec|src): .* Possible unexpanded macro in: Requires:.*emacs-filesystem >= %{_emacs_version}") addFilter('git-svn\..*: W: package-with-huge-docs')
# ignore potential "bashisms" in docs
addFilter('git-core-doc\.noarch: W: potential-bashisms /usr/share/doc/git/')
# ignore unused-direct-shlib-dependency for libpcre; while it probably could be
# removed from some binaries, the cost of doing so isn't worth the gain.
addFilter('git-(core|daemon)\..*: W: unused-direct-shlib-dependency .* /lib64/libpcre2-.*')
# ignore duplicate gvimdiff/nvimdiff files; they are only 29 bytes, sourcing the same base
# vimdiff mergetool
addFilter('git-core\..*: W: files-duplicate /usr/libexec/git-core/mergetools/[gn]vimdiff')
# ignore non-standard-dir-in-var for gitweb (#479613)
addFilter('gitweb.noarch: W: non-standard-dir-in-var www')

View file

@ -1,22 +1,28 @@
^ok 1 # SKIP enable client-side http/2 \(missing HTTP2\)$
expensive 2GB clone test; enable with GIT_TEST_CLONE_2GB=true expensive 2GB clone test; enable with GIT_TEST_CLONE_2GB=true
filesystem does not corrupt utf-8 filesystem does not corrupt utf-8
fsmonitor--daemon is not supported on this platform
GIT_SKIP_TESTS GIT_SKIP_TESTS
missing AUTOIDENT missing AUTOIDENT
missing BUILTIN_TXT_
missing CASE_INSENSITIVE_FS missing CASE_INSENSITIVE_FS
missing DONTHAVEIT missing DONTHAVEIT
missing EXPENSIVE missing ([!]LONG_IS_64BIT,)?EXPENSIVE
missing FSMONITOR_DAEMON
missing JGIT missing JGIT
missing !?LAZY_(TRUE|FALSE) missing !?LAZY_(TRUE|FALSE)
missing MINGW missing MINGW
missing NATIVE_CRLF missing NATIVE_CRLF
missing !PCRE missing !PCRE
missing !PTHREADS missing !PTHREADS
missing !REFFILES
missing RFC1991 missing RFC1991
missing RUNTIME_PREFIX missing RUNTIME_PREFIX
missing SYMLINKS_WINDOWS missing SYMLINKS_WINDOWS
missing TAR_NEEDS_PAX_FALLBACK missing TAR_NEEDS_PAX_FALLBACK
missing UTF8_NFD_TO_NFC missing UTF8_NFD_TO_NFC
missing WINDOWS missing WINDOWS
skipped: skip all tests in t5559
skipping case insensitive tests skipping case insensitive tests
skipping git p4 tests skipping git p4 tests
skipping remote-svn tests, python not available skipping remote-svn tests, python not available
@ -24,3 +30,4 @@ skipping svn-info test
skipping Windows-(only path|specific) tests skipping Windows-(only path|specific) tests
Test requiring writable / skipped Test requiring writable / skipped
used to test external credential helpers used to test external credential helpers
You must set env var GIT_TEST_ALLOW_SUDO=YES in order to run this test

827
git.spec

File diff suppressed because it is too large Load diff

View file

@ -10,4 +10,17 @@ for exit_file in t/test-results/*.exit; do
printf '\n%s\n%s\n%s\n' "$sep" "$out_file" "$sep" printf '\n%s\n%s\n%s\n' "$sep" "$out_file" "$sep"
cat "$out_file" cat "$out_file"
done done
# tar up test-results & $testdir, then print base64 encoded output
#
# copy $testdir contents to test-results to avoid absolute paths with tar
cp -a $testdir/* t/test-results/
begin='-----BEGIN BASE64 MESSAGE-----'
end='-----END BASE64 MESSAGE-----'
printf '\n%s\n' 'test-results and trash directory output follows; decode via:'
printf '%s\n' "sed -n '/^${begin}$/,/^${end}$/{/^${begin}$/!{/^${end}$/!p}}' build.log | base64 -d >output.tar.zst"
printf '%s\n' "$begin"
tar -C t -cf - test-results/ | zstdmt -17 | base64
printf '%s\n' "$end"
exit 1 exit 1

View file

@ -1,2 +1,2 @@
SHA512 (git-2.34.1.tar.xz) = a1a8e9e6f64b1da25508fbd2f783564dcdbe181fb5ff1ebab3bdac6db6094e18acc334479a1abf22ac17ce4f733cc3e10a664db9ab234cd523735a3f027b42db SHA512 (git-2.52.0.tar.xz) = 965e5ebb72d1f080d64e34bdb75f0bb1689c9dd41dcf63b020d986bad49808ac09bfb1115962bc0c5b95bac8622367ac4cd09aa89266f73d2137fe94c90dd3ed
SHA512 (git-2.34.1.tar.sign) = a1111276e18da1a7b360e3ed3b8460034ea413b116482b0b66342f8873a9dd02a90f3f5bc7ad1e4b3c7f39ed55926a8155064b849e6e6bdf9478cb85b93f10b5 SHA512 (git-2.52.0.tar.sign) = a5a68ce131a5763650c477ec01a4de958dd6a946bdea0f613e26bdab41d2df6b3ca63f9028bbe603bf0c834bd415c86e6c616b1ff08cc48aa7c3c61a37b24b74