diff --git a/.git.metadata b/.git.metadata
new file mode 100644
index 0000000..23e9687
--- /dev/null
+++ b/.git.metadata
@@ -0,0 +1,2 @@
+a66f98f88bf7734f8463446ac0735cee190da1dc SOURCES/git-2.31.1.tar.xz
+87d3a395bad523277647f8614fbd9fefe0450fc6 SOURCES/gpgkey-junio.asc
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..69936fb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+SOURCES/git-2.31.1.tar.xz
+SOURCES/gpgkey-junio.asc
diff --git a/SOURCES/git-2.27.0-core-crypto-hmac.patch b/SOURCES/git-2.27.0-core-crypto-hmac.patch
new file mode 100644
index 0000000..c99ced2
--- /dev/null
+++ b/SOURCES/git-2.27.0-core-crypto-hmac.patch
@@ -0,0 +1,70 @@
+diff -ur a/builtin/receive-pack.c b/builtin/receive-pack.c
+--- a/builtin/receive-pack.c	2020-06-01 17:49:27.000000000 +0200
++++ b/builtin/receive-pack.c	2020-06-15 15:28:48.149268576 +0200
+@@ -29,6 +29,8 @@
+ #include "commit-reach.h"
+ #include "worktree.h"
+ #include "shallow.h"
++#include <openssl/hmac.h>	
++#include <openssl/evp.h>
+ 
+ static const char * const receive_pack_usage[] = {
+ 	N_("git receive-pack <git-dir>"),
+@@ -419,43 +421,11 @@
+ 	return 0;
+ }
+ 
+-static void hmac_hash(unsigned char *out,
++static inline void hmac_hash(unsigned char *out,
+ 		      const char *key_in, size_t key_len,
+ 		      const char *text, size_t text_len)
+ {
+-	unsigned char key[GIT_MAX_BLKSZ];
+-	unsigned char k_ipad[GIT_MAX_BLKSZ];
+-	unsigned char k_opad[GIT_MAX_BLKSZ];
+-	int i;
+-	git_hash_ctx ctx;
+-
+-	/* RFC 2104 2. (1) */
+-	memset(key, '\0', GIT_MAX_BLKSZ);
+-	if (the_hash_algo->blksz < key_len) {
+-		the_hash_algo->init_fn(&ctx);
+-		the_hash_algo->update_fn(&ctx, key_in, key_len);
+-		the_hash_algo->final_fn(key, &ctx);
+-	} else {
+-		memcpy(key, key_in, key_len);
+-	}
+-
+-	/* RFC 2104 2. (2) & (5) */
+-	for (i = 0; i < sizeof(key); i++) {
+-		k_ipad[i] = key[i] ^ 0x36;
+-		k_opad[i] = key[i] ^ 0x5c;
+-	}
+-
+-	/* RFC 2104 2. (3) & (4) */
+-	the_hash_algo->init_fn(&ctx);
+-	the_hash_algo->update_fn(&ctx, k_ipad, sizeof(k_ipad));
+-	the_hash_algo->update_fn(&ctx, text, text_len);
+-	the_hash_algo->final_fn(out, &ctx);
+-
+-	/* RFC 2104 2. (6) & (7) */
+-	the_hash_algo->init_fn(&ctx);
+-	the_hash_algo->update_fn(&ctx, k_opad, sizeof(k_opad));
+-	the_hash_algo->update_fn(&ctx, out, the_hash_algo->rawsz);
+-	the_hash_algo->final_fn(out, &ctx);
++	HMAC(EVP_sha1(), key_in, key_len, text, text_len, out, NULL);
+ }
+ 
+ static char *prepare_push_cert_nonce(const char *path, timestamp_t stamp)
+diff -ur a/Makefile b/Makefile
+--- a/Makefile	2020-06-01 17:49:27.000000000 +0200
++++ b/Makefile	2020-06-15 15:00:45.212758547 +0200
+@@ -1830,6 +1830,8 @@
+ 	BASIC_CFLAGS += -DHAVE_GETDELIM
+ endif
+ 
++EXTLIBS += -lcrypto
++
+ ifneq ($(PROCFS_EXECUTABLE_PATH),)
+ 	procfs_executable_path_SQ = $(subst ','\'',$(PROCFS_EXECUTABLE_PATH))
+ 	BASIC_CFLAGS += '-DPROCFS_EXECUTABLE_PATH="$(procfs_executable_path_SQ)"'
diff --git a/SOURCES/git-2.31.1.tar.sign b/SOURCES/git-2.31.1.tar.sign
new file mode 100644
index 0000000..a7b42c1
Binary files /dev/null and b/SOURCES/git-2.31.1.tar.sign differ
diff --git a/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch b/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch
new file mode 100644
index 0000000..37a22dd
--- /dev/null
+++ b/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch
@@ -0,0 +1,26 @@
+From 09891c65a5f7409ce0bd37daced0ff31fbb1b1c9 Mon Sep 17 00:00:00 2001
+From: Todd Zullinger <tmz@pobox.com>
+Date: Mon, 23 Mar 2009 00:03:36 -0400
+Subject: [PATCH] git-cvsimport: Ignore cvsps-2.2b1 Branches: output
+
+Signed-off-by: Todd Zullinger <tmz@pobox.com>
+---
+ git-cvsimport.perl |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/git-cvsimport.perl b/git-cvsimport.perl
+index e439202..d020f1a 100755
+--- a/git-cvsimport.perl
++++ b/git-cvsimport.perl
+@@ -952,7 +952,7 @@ while (<CVS>) {
+ 	} elsif (/^-+$/) { # end of unknown-line processing
+ 		$state = 1;
+ 	} elsif ($state != 11) { # ignore stuff when skipping
+-		print STDERR "* UNKNOWN LINE * $_\n";
++		print STDERR "* UNKNOWN LINE * $_\n" unless /^Branches: /;
+ 	}
+ }
+ commit() if $branch and $state != 11;
+-- 
+1.6.2.2
+
diff --git a/SOURCES/git-gui.desktop b/SOURCES/git-gui.desktop
new file mode 100644
index 0000000..f74f066
--- /dev/null
+++ b/SOURCES/git-gui.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Git GUI
+GenericName=Git GUI
+Comment=A graphical interface to Git
+Exec=git gui
+Icon=/usr/share/git-gui/lib/git-gui.ico
+Terminal=false
+Type=Application
+Categories=Development;
diff --git a/SOURCES/git.socket b/SOURCES/git.socket
new file mode 100644
index 0000000..3dec01d
--- /dev/null
+++ b/SOURCES/git.socket
@@ -0,0 +1,9 @@
+[Unit]
+Description=Git Activation Socket
+
+[Socket]
+ListenStream=9418
+Accept=true
+
+[Install]
+WantedBy=sockets.target
diff --git a/SOURCES/git.xinetd.in b/SOURCES/git.xinetd.in
new file mode 100644
index 0000000..d4ca95d
--- /dev/null
+++ b/SOURCES/git.xinetd.in
@@ -0,0 +1,14 @@
+# default: off
+# description: The git dæmon allows git repositories to be exported using \
+#       the git:// protocol.
+
+service git
+{
+        disable         = yes
+        socket_type     = stream
+        wait            = no
+        user            = nobody
+        server          = @GITEXECDIR@/git-daemon
+        server_args     = --base-path=@BASE_PATH@ --export-all --user-path=public_git --syslog --inetd --verbose
+        log_on_failure  += USERID
+}
diff --git a/SOURCES/git@.service.in b/SOURCES/git@.service.in
new file mode 100644
index 0000000..7abcfeb
--- /dev/null
+++ b/SOURCES/git@.service.in
@@ -0,0 +1,10 @@
+[Unit]
+Description=Git Repositories Server Daemon
+Documentation=man:git-daemon(1)
+
+[Service]
+User=nobody
+ExecStart=-@GITEXECDIR@/git-daemon --base-path=@BASE_PATH@ --export-all \
+          --user-path=public_git --inetd --log-destination=stderr --verbose
+StandardInput=socket
+StandardError=journal
diff --git a/SOURCES/gitweb-httpd.conf b/SOURCES/gitweb-httpd.conf
new file mode 100644
index 0000000..4f4eac7
--- /dev/null
+++ b/SOURCES/gitweb-httpd.conf
@@ -0,0 +1,7 @@
+Alias /git /var/www/git
+
+<Directory /var/www/git>
+  Options +ExecCGI
+  AddHandler cgi-script .cgi
+  DirectoryIndex gitweb.cgi
+</Directory>
diff --git a/SOURCES/gitweb.conf.in b/SOURCES/gitweb.conf.in
new file mode 100644
index 0000000..c04a96b
--- /dev/null
+++ b/SOURCES/gitweb.conf.in
@@ -0,0 +1,53 @@
+# The gitweb config file is a fragment of perl code. You can set variables
+# using "our $variable = value"; text from "#" character until the end of a
+# line is ignored. See perlsyn(1) man page for details.
+#
+# See /usr/share/doc/gitweb-*/README and /usr/share/doc/gitweb-*/INSTALL for
+# more details and available configuration variables.
+
+# Set the path to git projects.  This is an absolute filesystem path which will
+# be prepended to the project path.
+#our $projectroot = "@PROJECTROOT@";
+
+# Set the list of git base URLs used for URL to where fetch project from, i.e.
+# the full URL is "$git_base_url/$project". By default this is empty
+#our @git_base_url_list = qw(git://git.example.com
+#                            ssh://git.example.com@PROJECTROOT@);
+
+# Enable the 'blame' blob view, showing the last commit that modified
+# each line in the file. This can be very CPU-intensive. Disabled by default
+#$feature{'blame'}{'default'} = [1];
+#
+# Allow projects to override the default setting via git config file.
+# Example: gitweb.blame = 0|1;
+#$feature{'blame'}{'override'} = 1;
+
+# Disable the 'snapshot' link, providing a compressed archive of any tree. This
+# can potentially generate high traffic if you have large project. Enabled for
+# .tar.gz snapshots by default.
+#
+# Value is a list of formats defined in %known_snapshot_formats that you wish
+# to offer.
+#$feature{'snapshot'}{'default'} = [];
+#
+# Allow projects to override the default setting via git config file.
+# Example: gitweb.snapshot = tbz2,zip; (use "none" to disable)
+#$feature{'snapshot'}{'override'} = 1;
+
+# Disable grep search, which will list the files in currently selected tree
+# containing the given string. This can be potentially CPU-intensive, of
+# course. Enabled by default.
+#$feature{'grep'}{'default'} = [0];
+#
+# Allow projects to override the default setting via git config file.
+# Example: gitweb.grep = 0|1;
+#$feature{'grep'}{'override'} = 1;
+
+# Disable the pickaxe search, which will list the commits that modified a given
+# string in a file. This can be practical and quite faster alternative to
+# 'blame', but still potentially CPU-intensive. Enabled by default.
+#$feature{'pickaxe'}{'default'} = [0];
+#
+# Allow projects to override the default setting via git config file.
+# Example: gitweb.pickaxe = 0|1;
+#$feature{'pickaxe'}{'override'} = 1;
diff --git a/SOURCES/print-failed-test-output b/SOURCES/print-failed-test-output
new file mode 100644
index 0000000..d0d63aa
--- /dev/null
+++ b/SOURCES/print-failed-test-output
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+shopt -s failglob
+
+# Print output from failing tests
+printf -v sep "%0.s-" {1..80}
+for exit_file in t/test-results/*.exit; do
+    [ "$(< "$exit_file")" -eq 0 ] && continue
+    out_file="${exit_file%exit}out"
+    printf '\n%s\n%s\n%s\n' "$sep" "$out_file" "$sep"
+    cat "$out_file"
+done
+exit 1
diff --git a/SPECS/git.spec b/SPECS/git.spec
new file mode 100644
index 0000000..ef70075
--- /dev/null
+++ b/SPECS/git.spec
@@ -0,0 +1,1722 @@
+# Pass --without docs to rpmbuild if you don't want the documentation
+%bcond_without docs
+
+# Pass --without tests to rpmbuild if you don't want to run the tests
+%bcond_without tests
+
+%global gitexecdir          %{_libexecdir}/git-core
+
+# Settings for Fedora >= 34
+%if 0%{?fedora} >= 34
+%bcond_with                 emacs
+%else
+%bcond_without              emacs
+%endif
+
+# Settings for Fedora
+%if 0%{?fedora}
+# linkchecker is not available on EL
+%bcond_without              linkcheck
+%else
+%bcond_with                 linkcheck
+%endif
+
+# Settings for Fedora and EL >= 9
+%if 0%{?fedora} || 0%{?rhel} >= 9
+%bcond_without              asciidoctor
+%else
+%bcond_with                 asciidoctor
+%endif
+
+# Settings for Fedora and EL > 7
+%if 0%{?fedora} || 0%{?rhel} > 7
+%bcond_with                 python2
+%bcond_without              python3
+%global gitweb_httpd_conf   gitweb.conf
+%global use_glibc_langpacks 1
+%global use_perl_generators 1
+%global use_perl_interpreter 1
+%else
+%bcond_without              python2
+%bcond_with                 python3
+%global gitweb_httpd_conf   git.conf
+%global use_glibc_langpacks 0
+%global use_perl_generators 0
+%global use_perl_interpreter 0
+%endif
+
+# Settings for Fedora and EL >= 7
+%if 0%{?fedora} || 0%{?rhel} >= 7
+%bcond_without              libsecret
+%global bashcomp_pkgconfig  1
+%global bashcompdir         %(pkg-config --variable=completionsdir bash-completion 2>/dev/null)
+%global bashcomproot        %(dirname %{bashcompdir} 2>/dev/null)
+%global emacs_filesystem    1
+%global use_new_rpm_filters 1
+%global use_systemd         1
+%else
+%bcond_with                 libsecret
+%global bashcomp_pkgconfig  0
+%global bashcompdir         %{_sysconfdir}/bash_completion.d
+%global bashcomproot        %{bashcompdir}
+%global emacs_filesystem    0
+%global use_new_rpm_filters 0
+%global use_systemd         0
+%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
+%endif
+
+# Allow cvs subpackage to be toggled via --with/--without
+# Disable cvs subpackage by default on EL > 7
+%if 0%{?rhel} > 7
+%bcond_with                 cvs
+%else
+%bcond_without              cvs
+%endif
+
+# Allow p4 subpackage to be toggled via --with/--without
+# Disable by default if we lack python2 support
+%if %{without python2}
+%bcond_with                 p4
+%else
+%bcond_without              p4
+%endif
+
+# Hardening flags for EL-7
+%if 0%{?rhel} == 7
+%global _hardened_build     1
+%endif
+
+# Hardening flags for EL-6
+%if 0%{?rhel} == 6
+%global build_cflags        %{build_cflags} -fPIC -pie
+%global build_ldflags       -Wl,-z,relro -Wl,-z,now
+%endif
+
+# Define for release candidates
+#global rcrev   .rc0
+
+Name:           git
+Version:        2.31.1
+Release:        2%{?rcrev}%{?dist}.2
+Summary:        Fast Version Control System
+License:        GPLv2
+URL:            https://git-scm.com/
+Source0:        https://www.kernel.org/pub/software/scm/git/%{?rcrev:testing/}%{name}-%{version}%{?rcrev}.tar.xz
+Source1:        https://www.kernel.org/pub/software/scm/git/%{?rcrev:testing/}%{name}-%{version}%{?rcrev}.tar.sign
+
+# Junio C Hamano's key is used to sign git releases, it can be found in the
+# junio-gpg-pub tag within git.
+#
+# (Note that the tagged blob in git contains a version of the key with an
+# expired signing subkey.  The subkey expiration has been extended on the
+# public keyservers, but the blob in git has not been updated.)
+#
+# https://git.kernel.org/cgit/git/git.git/tag/?h=junio-gpg-pub
+# https://git.kernel.org/cgit/git/git.git/blob/?h=junio-gpg-pub&id=7214aea37915ee2c4f6369eb9dea520aec7d855b
+Source2:        gpgkey-junio.asc
+
+# Local sources begin at 10 to allow for additional future upstream sources
+Source11:       git.xinetd.in
+Source12:       git-gui.desktop
+Source13:       gitweb-httpd.conf
+Source14:       gitweb.conf.in
+Source15:       git@.service.in
+Source16:       git.socket
+
+# Script to print test failure output (used in %%check)
+Source99:       print-failed-test-output
+
+# https://bugzilla.redhat.com/490602
+Patch0:         git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch
+# https://bugzilla.redhat.com/1956345
+Patch1:         git-2.27.0-core-crypto-hmac.patch
+
+%if %{with docs}
+# pod2man is needed to build Git.3pm
+BuildRequires:  %{_bindir}/pod2man
+%if %{with asciidoctor}
+BuildRequires:  docbook5-style-xsl
+BuildRequires:  rubygem-asciidoctor
+%else
+BuildRequires:  asciidoc >= 8.4.1
+%endif
+# endif with asciidoctor
+BuildRequires:  xmlto
+%if %{with linkcheck}
+BuildRequires:  linkchecker
+%endif
+# endif with linkcheck
+%endif
+# endif with docs
+BuildRequires:  desktop-file-utils
+BuildRequires:  diffutils
+%if %{with emacs}
+BuildRequires:  emacs-common
+%endif
+# endif emacs-common
+%if 0%{?rhel} && 0%{?rhel} < 9
+# Require epel-rpm-macros for the %%gpgverify macro on EL-7/EL-8, and
+# %%build_cflags & %%build_ldflags on EL-7.
+BuildRequires:  epel-rpm-macros
+%endif
+# endif rhel < 9
+BuildRequires:  expat-devel
+BuildRequires:  findutils
+BuildRequires:  gawk
+BuildRequires:  gcc
+BuildRequires:  gettext
+BuildRequires:  gnupg2
+BuildRequires:  libcurl-devel
+BuildRequires:  make
+BuildRequires:  openssl-devel
+BuildRequires:  pcre2-devel
+BuildRequires:  perl(Error)
+BuildRequires:  perl(lib)
+BuildRequires:  perl(Test)
+%if %{use_perl_generators}
+BuildRequires:  perl-generators
+%endif
+# endif use_perl_generators
+%if %{use_perl_interpreter}
+BuildRequires:  perl-interpreter
+%else
+BuildRequires:  perl
+%endif
+# endif use_perl_interpreter
+%if %{bashcomp_pkgconfig}
+BuildRequires:  pkgconfig(bash-completion)
+%endif
+# endif bashcomp_pkgconfig
+BuildRequires:  sed
+%if %{use_systemd}
+# For macros
+BuildRequires:  systemd
+%endif
+# endif use_systemd
+BuildRequires:  tcl
+BuildRequires:  tk
+BuildRequires:  xz
+BuildRequires:  zlib-devel >= 1.2
+
+%if %{with tests}
+# Test suite requirements
+BuildRequires:  acl
+%if 0%{?fedora} >= 27 || 0%{?rhel} > 7
+# Needed by t5540-http-push-webdav.sh
+BuildRequires: apr-util-bdb
+%endif
+# endif fedora >= 27
+BuildRequires:  bash
+%if %{with cvs}
+BuildRequires:  cvs
+BuildRequires:  cvsps
+%endif
+# endif with cvs
+%if %{use_glibc_langpacks}
+# glibc-all-langpacks and glibc-langpack-is are needed for GETTEXT_LOCALE and
+# GETTEXT_ISO_LOCALE test prereq's, glibc-langpack-en ensures en_US.UTF-8.
+BuildRequires:  glibc-all-langpacks
+BuildRequires:  glibc-langpack-en
+BuildRequires:  glibc-langpack-is
+%endif
+# endif use_glibc_langpacks
+%if 0%{?fedora} && 0%{?fedora} < 30
+BuildRequires:  gnupg
+%endif
+# endif fedora < 30
+%if 0%{?fedora} || 0%{?rhel} > 8
+BuildRequires:  gnupg2-smime
+%endif
+# endif fedora or el > 8
+%if 0%{?fedora} || 0%{?rhel} == 6 || ( 0%{?rhel} >= 7 && ( "%{_arch}" == "ppc64le" || "%{_arch}" == "x86_64" ) )
+BuildRequires:  highlight
+%endif
+# endif fedora, el-6, or el7+ (ppc64le/x86_64)
+BuildRequires:  httpd
+%if 0%{?fedora} && ! ( "%{_arch}" == "i386" || "%{_arch}" == "s390x" )
+BuildRequires:  jgit
+%endif
+# endif fedora (except i386 and s390x)
+BuildRequires:  mod_dav_svn
+BuildRequires:  perl(App::Prove)
+BuildRequires:  perl(CGI)
+BuildRequires:  perl(CGI::Carp)
+BuildRequires:  perl(CGI::Util)
+BuildRequires:  perl(DBD::SQLite)
+BuildRequires:  perl(Digest::MD5)
+BuildRequires:  perl(Fcntl)
+BuildRequires:  perl(File::Basename)
+BuildRequires:  perl(File::Copy)
+BuildRequires:  perl(File::Find)
+BuildRequires:  perl(filetest)
+BuildRequires:  perl(HTTP::Date)
+BuildRequires:  perl(IO::Pty)
+BuildRequires:  perl(JSON)
+BuildRequires:  perl(JSON::PP)
+BuildRequires:  perl(Mail::Address)
+BuildRequires:  perl(Memoize)
+BuildRequires:  perl(POSIX)
+BuildRequires:  perl(Term::ReadLine)
+BuildRequires:  perl(Test::More)
+BuildRequires:  perl(Time::HiRes)
+%if %{with python2}
+BuildRequires:  python2-devel
+%endif
+# endif with python2
+%if %{with python3}
+BuildRequires:  python3-devel
+%endif
+# endif with python3
+BuildRequires:  subversion
+BuildRequires:  subversion-perl
+BuildRequires:  tar
+BuildRequires:  time
+BuildRequires:  zip
+%endif
+# endif with tests
+
+Requires:       git-core = %{version}-%{release}
+Requires:       git-core-doc = %{version}-%{release}
+%if ! %{defined perl_bootstrap}
+Requires:       perl(Term::ReadKey)
+%endif
+# endif ! defined perl_bootstrap
+Requires:       perl-Git = %{version}-%{release}
+
+%if %{with emacs} && %{emacs_filesystem} && %{defined _emacs_version}
+Requires:       emacs-filesystem >= %{_emacs_version}
+%endif
+# endif with emacs && emacs_filesystem
+
+# Obsolete emacs-git if it's disabled
+%if %{without emacs}
+Obsoletes:      emacs-git < %{?epoch:%{epoch}:}%{version}-%{release}
+%endif
+# endif without emacs
+
+# Obsolete git-cvs if it's disabled
+%if %{without cvs}
+Obsoletes:      git-cvs < %{?epoch:%{epoch}:}%{version}-%{release}
+%endif
+# endif without cvs
+
+# Obsolete git-p4 if it's disabled
+%if %{without p4}
+Obsoletes:      git-p4 < %{?epoch:%{epoch}:}%{version}-%{release}
+%endif
+# endif without p4
+
+%description
+Git is a fast, scalable, distributed revision control system with an
+unusually rich command set that provides both high-level operations
+and full access to internals.
+
+The git rpm installs common set of tools which are usually using with
+small amount of dependencies. To install all git packages, including
+tools for integrating with other SCMs, install the git-all meta-package.
+
+%package all
+Summary:        Meta-package to pull in all git tools
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+%if %{with libsecret}
+Requires:       git-credential-libsecret = %{version}-%{release}
+%endif
+# endif with libsecret
+%if %{with cvs}
+Requires:       git-cvs = %{version}-%{release}
+%endif
+# endif with cvs
+Requires:       git-daemon = %{version}-%{release}
+Requires:       git-email = %{version}-%{release}
+Requires:       git-gui = %{version}-%{release}
+%if %{with p4}
+Requires:       git-p4 = %{version}-%{release}
+%endif
+# endif with p4
+Requires:       git-subtree = %{version}-%{release}
+Requires:       git-svn = %{version}-%{release}
+Requires:       git-instaweb = %{version}-%{release}
+Requires:       gitk = %{version}-%{release}
+Requires:       perl-Git = %{version}-%{release}
+%if ! %{defined perl_bootstrap}
+Requires:       perl(Term::ReadKey)
+%endif
+# endif ! defined perl_bootstrap
+%if %{with emacs} && ! %{emacs_filesystem}
+Requires:       emacs-git = %{version}-%{release}
+%endif
+# endif with emacs && ! emacs_filesystem
+%description all
+Git is a fast, scalable, distributed revision control system with an
+unusually rich command set that provides both high-level operations
+and full access to internals.
+
+This is a dummy package which brings in all subpackages.
+
+%package core
+Summary:        Core package of git with minimal functionality
+Requires:       less
+Requires:       openssh-clients
+Requires:       zlib >= 1.2
+%description core
+Git is a fast, scalable, distributed revision control system with an
+unusually rich command set that provides both high-level operations
+and full access to internals.
+
+The git-core rpm installs really the core tools with minimal
+dependencies. Install git package for common set of tools.
+To install all git packages, including tools for integrating with
+other SCMs, install the git-all meta-package.
+
+%package core-doc
+Summary:        Documentation files for git-core
+BuildArch:      noarch
+Requires:       git-core = %{version}-%{release}
+%description core-doc
+Documentation files for git-core package including man pages.
+
+%if %{with libsecret}
+%package credential-libsecret
+Summary:        Git helper for accessing credentials via libsecret
+BuildRequires:  libsecret-devel
+Requires:       git = %{version}-%{release}
+%description credential-libsecret
+%{summary}.
+%endif
+# endif with libsecret
+
+%if %{with cvs}
+%package cvs
+Summary:        Git tools for importing CVS repositories
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+Requires:       cvs
+Requires:       cvsps
+Requires:       perl(DBD::SQLite)
+%description cvs
+%{summary}.
+%endif
+# endif with cvs
+
+%package daemon
+Summary:        Git protocol daemon
+Requires:       git-core = %{version}-%{release}
+%if %{use_systemd}
+Requires:       systemd
+Requires(post): systemd
+Requires(preun):  systemd
+Requires(postun): systemd
+%else
+Requires:       xinetd
+%endif
+# endif use_systemd
+%description daemon
+The git daemon for supporting git:// access to git repositories
+
+%package email
+Summary:        Git tools for sending patches via email
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+Requires:       perl(Authen::SASL)
+Requires:       perl(Net::SMTP::SSL)
+%description email
+%{summary}.
+
+%if %{with emacs} && ! %{emacs_filesystem}
+%package -n emacs-git
+Summary:        Git version control system support for Emacs
+Requires:       git = %{version}-%{release}
+BuildArch:      noarch
+Requires:       emacs(bin) >= %{_emacs_version}
+Obsoletes:      emacs-git-el < 2.18.0-0.0
+Provides:       emacs-git-el = %{version}-%{release}
+%description -n emacs-git
+%{summary}.
+%endif
+# endif with emacs && ! emacs_filesystem
+
+%package -n gitk
+Summary:        Git repository browser
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+Requires:       git-gui = %{version}-%{release}
+Requires:       tk >= 8.4
+%description -n gitk
+%{summary}.
+
+%package -n gitweb
+Summary:        Simple web interface to git repositories
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+%description -n gitweb
+%{summary}.
+
+%package gui
+Summary:        Graphical interface to Git
+BuildArch:      noarch
+Requires:       gitk = %{version}-%{release}
+Requires:       tk >= 8.4
+%description gui
+%{summary}.
+
+%package instaweb
+Summary:        Repository browser in gitweb
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+Requires:       gitweb = %{version}-%{release}
+%if 0%{?rhel} >= 9
+Requires:       httpd
+%else
+Requires:       lighttpd
+%endif
+
+%description instaweb
+A simple script to set up gitweb and a web server for browsing the local
+repository.
+
+%if %{with p4}
+%package p4
+Summary:        Git tools for working with Perforce depots
+BuildArch:      noarch
+BuildRequires:  python2-devel
+Requires:       git = %{version}-%{release}
+%description p4
+%{summary}.
+%endif
+# endif with p4
+
+%package -n perl-Git
+Summary:        Perl interface to Git
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+Requires:       perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+%description -n perl-Git
+%{summary}.
+
+%package -n perl-Git-SVN
+Summary:        Perl interface to Git::SVN
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+Requires:       perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+%description -n perl-Git-SVN
+%{summary}.
+
+%package subtree
+Summary:        Git tools to merge and split repositories
+Requires:       git-core = %{version}-%{release}
+%description subtree
+Git subtrees allow subprojects to be included within a subdirectory
+of the main project, optionally including the subproject's entire
+history.
+
+%package svn
+Summary:        Git tools for interacting with Subversion repositories
+BuildArch:      noarch
+Requires:       git = %{version}-%{release}
+Requires:       perl(Digest::MD5)
+%if ! %{defined perl_bootstrap}
+Requires:       perl(Term::ReadKey)
+%endif
+# endif ! defined perl_bootstrap
+Requires:       subversion
+%description svn
+%{summary}.
+
+%prep
+# Verify GPG signatures
+xz -dc '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=-
+
+%autosetup -p1 -n %{name}-%{version}%{?rcrev}
+
+# Install print-failed-test-output script
+install -p -m 755 %{SOURCE99} print-failed-test-output
+
+# Remove git-archimport from command list
+sed -i '/^git-archimport/d' command-list.txt
+
+%if %{without cvs}
+# Remove git-cvs* from command list
+sed -i '/^git-cvs/d' command-list.txt
+%endif
+# endif without cvs
+
+%if %{without p4}
+# Remove git-p4 from command list
+sed -i '/^git-p4/d' command-list.txt
+%endif
+# endif without p4
+
+# Use these same options for every invocation of 'make'.
+# Otherwise it will rebuild in %%install due to flags changes.
+# Pipe to tee to aid confirmation/verification of settings.
+cat << \EOF | tee config.mak
+V = 1
+CFLAGS = %{build_cflags}
+LDFLAGS = %{build_ldflags}
+NEEDS_CRYPTO_WITH_SSL = 1
+USE_LIBPCRE = 1
+ETC_GITCONFIG = %{_sysconfdir}/gitconfig
+INSTALL_SYMLINKS = 1
+GITWEB_PROJECTROOT = %{_localstatedir}/lib/git
+GNU_ROFF = 1
+NO_PERL_CPAN_FALLBACKS = 1
+%if %{with python2}
+PYTHON_PATH = %{__python2}
+%else
+NO_PYTHON = 1
+%endif
+# endif with python2
+%if %{with asciidoctor}
+USE_ASCIIDOCTOR = 1
+%endif
+# endif with asciidoctor
+htmldir = %{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}}
+prefix = %{_prefix}
+perllibdir = %{perl_vendorlib}
+gitwebdir = %{_localstatedir}/www/git
+
+# Test options
+DEFAULT_TEST_TARGET = prove
+GIT_PROVE_OPTS = --verbose --normalize %{?_smp_mflags} --formatter=TAP::Formatter::File
+GIT_TEST_OPTS = -x --verbose-log
+EOF
+
+# Filter bogus perl requires
+# packed-refs comes from a comment in contrib/hooks/update-paranoid
+%if %{use_new_rpm_filters}
+%{?perl_default_filter}
+%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(packed-refs\\)
+%if ! %{defined perl_bootstrap}
+%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(Term::ReadKey\\)
+%endif
+# endif ! defined perl_bootstrap
+%else
+cat << \EOF > %{name}-req
+#!/bin/sh
+%{__perl_requires} $* |\
+sed -e '/perl(packed-refs)/d'
+EOF
+
+%global __perl_requires %{_builddir}/%{name}-%{version}%{?rcrev}/%{name}-req
+chmod +x %{__perl_requires}
+%endif
+# endif use_new_rpm_filters
+
+# Remove Git::LoadCPAN to ensure we use only system perl modules.  This also
+# allows the dependencies to be automatically processed by rpm.
+rm -rf perl/Git/LoadCPAN{.pm,/}
+grep -rlZ '^use Git::LoadCPAN::' | xargs -r0 sed -i 's/Git::LoadCPAN:://g'
+
+# Update gitweb default home link string
+sed -i 's@"++GITWEB_HOME_LINK_STR++"@$ENV{"SERVER_NAME"} ? "git://" . $ENV{"SERVER_NAME"} : "projects"@' \
+    gitweb/gitweb.perl
+
+# Move contrib/{contacts,subtree} docs to Documentation so they build with the
+# proper asciidoc/docbook/xmlto options
+mv contrib/{contacts,subtree}/git-*.txt Documentation/
+
+%build
+# Improve build reproducibility
+export TZ=UTC
+export SOURCE_DATE_EPOCH=$(date -r version +%%s 2>/dev/null)
+
+%make_build all %{?with_docs:doc}
+
+%make_build -C contrib/contacts/ all
+
+%if %{with libsecret}
+%make_build -C contrib/credential/libsecret/
+%endif
+# endif with libsecret
+
+%make_build -C contrib/credential/netrc/
+
+%make_build -C contrib/diff-highlight/
+
+%make_build -C contrib/subtree/ all
+
+# Fix shebang in a few places to silence rpmlint complaints
+%if %{with python2}
+sed -i -e '1s@#! */usr/bin/env python$@#!%{__python2}@' \
+    contrib/fast-import/import-zips.py \
+    contrib/hooks/multimail/git_multimail.py \
+    contrib/hooks/multimail/migrate-mailhook-config \
+    contrib/hooks/multimail/post-receive.example
+%else
+# Remove contrib/fast-import/import-zips.py which requires python2.
+rm -rf contrib/fast-import/import-zips.py
+%endif
+# endif with python2
+
+# The multimail hook is installed with git.  Use python3 to avoid an
+# unnecessary python2 dependency, if possible.  Also fix contrib/hg-to-git
+# while here.
+%if %{with python3}
+sed -i -e '1s@#!\( */usr/bin/env python\|%{__python2}\)$@#!%{__python3}@' \
+    contrib/hg-to-git/hg-to-git.py \
+    contrib/hooks/multimail/git_multimail.py \
+    contrib/hooks/multimail/migrate-mailhook-config \
+    contrib/hooks/multimail/post-receive.example
+%endif
+# endif with python3
+
+%install
+%make_install %{?with_docs:install-doc}
+
+%make_install -C contrib/contacts
+
+%if %{with emacs}
+%global elispdir %{_emacs_sitelispdir}/git
+pushd contrib/emacs >/dev/null
+for el in *.el ; do
+    # Note: No byte-compiling is done.  These .el files are one-line stubs
+    # which only serve to point users to better alternatives.
+    install -Dpm 644 $el %{buildroot}%{elispdir}/$el
+    rm -f $el # clean up to avoid cruft in git-core-doc
+done
+popd >/dev/null
+%endif
+# endif with emacs
+
+%if %{with libsecret}
+install -pm 755 contrib/credential/libsecret/git-credential-libsecret \
+    %{buildroot}%{gitexecdir}
+%endif
+# endif with libsecret
+install -pm 755 contrib/credential/netrc/git-credential-netrc \
+    %{buildroot}%{gitexecdir}
+# temporarily move contrib/credential/netrc aside to prevent it from being
+# deleted in the docs preparation, so the tests can be run in %%check
+mv contrib/credential/netrc .
+
+%make_install -C contrib/subtree
+
+mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d
+install -pm 0644 %{SOURCE13} %{buildroot}%{_sysconfdir}/httpd/conf.d/%{gitweb_httpd_conf}
+sed "s|@PROJECTROOT@|%{_localstatedir}/lib/git|g" \
+    %{SOURCE14} > %{buildroot}%{_sysconfdir}/gitweb.conf
+
+# install contrib/diff-highlight and clean up to avoid cruft in git-core-doc
+install -Dpm 0755 contrib/diff-highlight/diff-highlight \
+    %{buildroot}%{_datadir}/git-core/contrib/diff-highlight
+rm -rf contrib/diff-highlight/{Makefile,diff-highlight,*.perl,t}
+
+# Clean up contrib/subtree to avoid cruft in the git-core-doc docdir
+rm -rf contrib/subtree/{INSTALL,Makefile,git-subtree*,t}
+
+# git-archimport is not supported
+find %{buildroot} Documentation -type f -name 'git-archimport*' -exec rm -f {} ';'
+
+%if %{without cvs}
+# Remove git-cvs* and gitcvs*
+find %{buildroot} Documentation \( -type f -o -type l \) \
+    \( -name 'git-cvs*' -o -name 'gitcvs*' \) -exec rm -f {} ';'
+%endif
+# endif without cvs
+
+%if %{without p4}
+# Remove git-p4* and mergetools/p4merge
+find %{buildroot} Documentation -type f -name 'git-p4*' -exec rm -f {} ';'
+rm -f %{buildroot}%{gitexecdir}/mergetools/p4merge
+%endif
+# endif without p4
+
+# Remove unneeded git-remote-testsvn so git-svn can be noarch
+rm -f %{buildroot}%{gitexecdir}/git-remote-testsvn
+
+exclude_re="archimport|email|git-(citool|credential-libsecret|cvs|daemon|gui|instaweb|p4|subtree|svn)|gitk|gitweb|p4merge"
+(find %{buildroot}{%{_bindir},%{_libexecdir}} -type f -o -type l | grep -vE "$exclude_re" | sed -e s@^%{buildroot}@@) > bin-man-doc-files
+(find %{buildroot}{%{_bindir},%{_libexecdir}} -mindepth 1 -type d | grep -vE "$exclude_re" | sed -e 's@^%{buildroot}@%dir @') >> bin-man-doc-files
+(find %{buildroot}%{perl_vendorlib} -type f | sed -e s@^%{buildroot}@@) > perl-git-files
+(find %{buildroot}%{perl_vendorlib} -mindepth 1 -type d | sed -e 's@^%{buildroot}@%dir @') >> perl-git-files
+# Split out Git::SVN files
+grep Git/SVN perl-git-files > perl-git-svn-files
+sed -i "/Git\/SVN/ d" perl-git-files
+%if %{with docs}
+(find %{buildroot}%{_mandir} -type f | grep -vE "$exclude_re|Git" | sed -e s@^%{buildroot}@@ -e 's/$/*/' ) >> bin-man-doc-files
+%else
+rm -rf %{buildroot}%{_mandir}
+%endif
+# endif with docs
+
+mkdir -p %{buildroot}%{_localstatedir}/lib/git
+%if %{use_systemd}
+install -Dp -m 0644 %{SOURCE16} %{buildroot}%{_unitdir}/git.socket
+perl -p \
+    -e "s|\@GITEXECDIR\@|%{gitexecdir}|g;" \
+    -e "s|\@BASE_PATH\@|%{_localstatedir}/lib/git|g;" \
+    %{SOURCE15} > %{buildroot}%{_unitdir}/git@.service
+%else
+mkdir -p %{buildroot}%{_sysconfdir}/xinetd.d
+perl -p \
+    -e "s|\@GITEXECDIR\@|%{gitexecdir}|g;" \
+    -e "s|\@BASE_PATH\@|%{_localstatedir}/lib/git|g;" \
+    %{SOURCE11} > %{buildroot}%{_sysconfdir}/xinetd.d/git
+%endif
+# endif use_systemd
+
+# Setup bash completion
+install -Dpm 644 contrib/completion/git-completion.bash %{buildroot}%{bashcompdir}/git
+ln -s git %{buildroot}%{bashcompdir}/gitk
+
+# Install tcsh completion
+mkdir -p %{buildroot}%{_datadir}/git-core/contrib/completion
+install -pm 644 contrib/completion/git-completion.tcsh \
+    %{buildroot}%{_datadir}/git-core/contrib/completion/
+
+# Drop .py extension from git_multimail to avoid byte-compiling
+mv contrib/hooks/multimail/git_multimail{.py,}
+
+# Move contrib/hooks out of %%docdir
+mkdir -p %{buildroot}%{_datadir}/git-core/contrib
+mv contrib/hooks %{buildroot}%{_datadir}/git-core/contrib
+pushd contrib > /dev/null
+ln -s ../../../git-core/contrib/hooks
+popd > /dev/null
+
+# Install git-prompt.sh
+mkdir -p %{buildroot}%{_datadir}/git-core/contrib/completion
+install -pm 644 contrib/completion/git-prompt.sh \
+    %{buildroot}%{_datadir}/git-core/contrib/completion/
+
+# install git-gui .desktop file
+desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE12}
+
+# symlink git-citool to git-gui if they are identical
+pushd %{buildroot}%{gitexecdir} >/dev/null
+if cmp -s git-gui git-citool 2>/dev/null; then
+    ln -svf git-gui git-citool
+fi
+popd >/dev/null
+
+# find translations
+%find_lang %{name} %{name}.lang
+cat %{name}.lang >> bin-man-doc-files
+
+# quiet some rpmlint complaints
+chmod -R g-w %{buildroot}
+chmod a-x %{buildroot}%{gitexecdir}/git-mergetool--lib
+# These files probably are not needed
+find . -regex '.*/\.\(git\(attributes\|ignore\)\|perlcriticrc\)' -delete
+chmod a-x Documentation/technical/api-index.sh
+find contrib -type f -print0 | xargs -r0 chmod -x
+
+# Split core files
+not_core_re="git-(add--interactive|contacts|credential-netrc|filter-branch|instaweb|request-pull|send-mail)|gitweb"
+grep -vE "$not_core_re|%{_mandir}" bin-man-doc-files > bin-files-core
+touch man-doc-files-core
+%if %{with docs}
+grep -vE "$not_core_re" bin-man-doc-files | grep "%{_mandir}" > man-doc-files-core
+%endif
+# endif with docs
+grep -E  "$not_core_re" bin-man-doc-files > bin-man-doc-git-files
+
+##### DOC
+# place doc files into %%{_pkgdocdir} and split them into expected packages
+# contrib
+not_core_doc_re="(git-(cvs|gui|citool|daemon|instaweb|subtree))|p4|svn|email|gitk|gitweb"
+mkdir -p %{buildroot}%{_pkgdocdir}/
+cp -pr CODE_OF_CONDUCT.md README.md Documentation/*.txt Documentation/RelNotes contrib %{buildroot}%{_pkgdocdir}/
+# Remove contrib/ files/dirs which have nothing useful for documentation
+rm -rf %{buildroot}%{_pkgdocdir}/contrib/{contacts,credential}/
+cp -p gitweb/INSTALL %{buildroot}%{_pkgdocdir}/INSTALL.gitweb
+cp -p gitweb/README %{buildroot}%{_pkgdocdir}/README.gitweb
+
+%if %{with docs}
+cp -pr Documentation/*.html Documentation/docbook-xsl.css %{buildroot}%{_pkgdocdir}/
+cp -pr Documentation/{howto,technical} %{buildroot}%{_pkgdocdir}/
+find %{buildroot}%{_pkgdocdir}/{howto,technical} -type f \
+    |grep -o "%{_pkgdocdir}.*$" >> man-doc-files-core
+%endif
+# endif with docs
+
+{
+    find %{buildroot}%{_pkgdocdir} -type f -maxdepth 1 \
+        | grep -o "%{_pkgdocdir}.*$" \
+        | grep -vE "$not_core_doc_re"
+    find %{buildroot}%{_pkgdocdir}/{contrib,RelNotes} -type f \
+        | grep -o "%{_pkgdocdir}.*$"
+    find %{buildroot}%{_pkgdocdir} -type d | grep -o "%{_pkgdocdir}.*$" \
+        | sed "s/^/\%dir /"
+} >> man-doc-files-core
+##### #DOC
+
+%check
+%if %{without tests}
+echo "*** Skipping tests"
+exit 0
+%endif
+# endif without tests
+
+%if %{with docs} && %{with linkcheck}
+# Test links in HTML documentation
+find %{buildroot}%{_pkgdocdir} -name "*.html" -print0 | xargs -r0 linkchecker
+%endif
+# endif with docs && with linkcheck
+
+# Tests to skip on all releases and architectures
+GIT_SKIP_TESTS=""
+
+%ifarch aarch64 %{arm} %{power64}
+# Skip tests which fail on aarch64, arm, and ppc
+#
+# The following 2 tests use run_with_limited_cmdline, which calls ulimit -s 128
+# to limit the maximum stack size.
+# t5541.35 'push 2000 tags over http'
+# t5551.25 'clone the 2,000 tag repo to check OS command line overflow'
+GIT_SKIP_TESTS="$GIT_SKIP_TESTS t5541.35 t5551.25"
+%endif
+# endif aarch64 %%{arm} %%{power64}
+
+%ifarch %{power64}
+# Skip tests which fail on ppc
+#
+# t9115-git-svn-dcommit-funky-renames is disabled because it frequently fails.
+# The port it uses (9115) is already in use.  It is unclear if this is
+# due to an issue in the test suite or a conflict with some other process on
+# the build host.  It only appears to occur on ppc-arches.
+GIT_SKIP_TESTS="$GIT_SKIP_TESTS t9115"
+%endif
+# endif %%{power64}
+
+export GIT_SKIP_TESTS
+
+# Set LANG so various UTF-8 tests are run
+export LANG=en_US.UTF-8
+
+# Explicitly enable tests which may be skipped opportunistically
+# (Check for variables set via test_tristate in the test suite)
+export GIT_SVN_TEST_HTTPD=true
+export GIT_TEST_GIT_DAEMON=true
+export GIT_TEST_HTTPD=true
+export GIT_TEST_SVNSERVE=true
+
+# Create tmpdir for test output and update GIT_TEST_OPTS
+# Also update GIT-BUILD-OPTIONS to keep make from any needless rebuilding
+testdir=$(mktemp -d -p /tmp git-t.XXXX)
+sed -i "s@^GIT_TEST_OPTS = .*@& --root=$testdir@" config.mak
+touch -r GIT-BUILD-OPTIONS ts
+sed -i "s@\(GIT_TEST_OPTS='.*\)'@\1 --root=$testdir'@" GIT-BUILD-OPTIONS
+touch -r ts GIT-BUILD-OPTIONS
+
+# Run the tests
+%__make test || ./print-failed-test-output
+
+# Run contrib/credential/netrc tests
+mkdir -p contrib/credential
+mv netrc contrib/credential/
+%make_build -C contrib/credential/netrc/ test || \
+%make_build -C contrib/credential/netrc/ testverbose
+
+# Clean up test dir
+rmdir --ignore-fail-on-non-empty "$testdir"
+
+%if %{use_systemd}
+%post daemon
+%systemd_post git.socket
+
+%preun daemon
+%systemd_preun git.socket
+
+%postun daemon
+%systemd_postun_with_restart git.socket
+%endif
+# endif use_systemd
+
+%files -f bin-man-doc-git-files
+%if %{with emacs} && %{emacs_filesystem}
+%{elispdir}
+%endif
+# endif with emacs && emacs_filesystem
+%{_datadir}/git-core/contrib/diff-highlight
+%{_datadir}/git-core/contrib/hooks/multimail
+%{_datadir}/git-core/contrib/hooks/update-paranoid
+%{_datadir}/git-core/contrib/hooks/setgitperms.perl
+%{_datadir}/git-core/templates/hooks/fsmonitor-watchman.sample
+%{_datadir}/git-core/templates/hooks/pre-rebase.sample
+%{_datadir}/git-core/templates/hooks/prepare-commit-msg.sample
+
+%files all
+# No files for you!
+
+%files core -f bin-files-core
+#NOTE: this is only use of the %%doc macro in this spec file and should not
+#      be used elsewhere
+%{!?_licensedir:%global license %doc}
+%license COPYING
+# exclude is best way here because of troubles with symlinks inside git-core/
+%exclude %{_datadir}/git-core/contrib/diff-highlight
+%exclude %{_datadir}/git-core/contrib/hooks/multimail
+%exclude %{_datadir}/git-core/contrib/hooks/update-paranoid
+%exclude %{_datadir}/git-core/contrib/hooks/setgitperms.perl
+%exclude %{_datadir}/git-core/templates/hooks/fsmonitor-watchman.sample
+%exclude %{_datadir}/git-core/templates/hooks/pre-rebase.sample
+%exclude %{_datadir}/git-core/templates/hooks/prepare-commit-msg.sample
+%{bashcomproot}
+%{_datadir}/git-core/
+
+%files core-doc -f man-doc-files-core
+%if 0%{?rhel} && 0%{?rhel} <= 7
+# .py files are only bytecompiled on EL <= 7
+%exclude %{_pkgdocdir}/contrib/*/*.py[co]
+%endif
+# endif rhel <= 7
+%{_pkgdocdir}/contrib/hooks
+
+%if %{with libsecret}
+%files credential-libsecret
+%defattr(-,root,root)
+%{gitexecdir}/git-credential-libsecret
+%endif
+# endif with libsecret
+
+%if %{with cvs}
+%files cvs
+%{_pkgdocdir}/*git-cvs*.txt
+%{_bindir}/git-cvsserver
+%{gitexecdir}/*cvs*
+%{?with_docs:%{_mandir}/man1/*cvs*.1*}
+%{?with_docs:%{_pkgdocdir}/*git-cvs*.html}
+%endif
+# endif with cvs
+
+%files daemon
+%{_pkgdocdir}/git-daemon*.txt
+%if %{use_systemd}
+%{_unitdir}/git.socket
+%{_unitdir}/git@.service
+%else
+%config(noreplace)%{_sysconfdir}/xinetd.d/git
+%endif
+# endif use_systemd
+%{gitexecdir}/git-daemon
+%{_localstatedir}/lib/git
+%{?with_docs:%{_mandir}/man1/git-daemon*.1*}
+%{?with_docs:%{_pkgdocdir}/git-daemon*.html}
+
+%if %{with emacs} && ! %{emacs_filesystem}
+%files -n emacs-git
+%{_pkgdocdir}/contrib/emacs/README
+%{elispdir}
+%endif
+# endif with emacs && ! emacs_filesystem
+
+%files email
+%{_pkgdocdir}/*email*.txt
+%{gitexecdir}/*email*
+%{?with_docs:%{_mandir}/man1/*email*.1*}
+%{?with_docs:%{_pkgdocdir}/*email*.html}
+
+%files -n gitk
+%{_pkgdocdir}/*gitk*.txt
+%{_bindir}/*gitk*
+%{_datadir}/gitk
+%{?with_docs:%{_mandir}/man1/*gitk*.1*}
+%{?with_docs:%{_pkgdocdir}/*gitk*.html}
+
+%files -n gitweb
+%{_pkgdocdir}/*.gitweb
+%{_pkgdocdir}/gitweb*.txt
+%{?with_docs:%{_mandir}/man1/gitweb.1*}
+%{?with_docs:%{_mandir}/man5/gitweb.conf.5*}
+%{?with_docs:%{_pkgdocdir}/gitweb*.html}
+%config(noreplace)%{_sysconfdir}/gitweb.conf
+%config(noreplace)%{_sysconfdir}/httpd/conf.d/%{gitweb_httpd_conf}
+%{_localstatedir}/www/git/
+
+%files gui
+%{gitexecdir}/git-gui*
+%{gitexecdir}/git-citool
+%{_datadir}/applications/*git-gui.desktop
+%{_datadir}/git-gui/
+%{_pkgdocdir}/git-gui.txt
+%{_pkgdocdir}/git-citool.txt
+%{?with_docs:%{_mandir}/man1/git-gui.1*}
+%{?with_docs:%{_pkgdocdir}/git-gui.html}
+%{?with_docs:%{_mandir}/man1/git-citool.1*}
+%{?with_docs:%{_pkgdocdir}/git-citool.html}
+
+%files instaweb
+%defattr(-,root,root)
+%{gitexecdir}/git-instaweb
+%{_pkgdocdir}/git-instaweb.txt
+%{?with_docs:%{_mandir}/man1/git-instaweb.1*}
+%{?with_docs:%{_pkgdocdir}/git-instaweb.html}
+
+%if %{with p4}
+%files p4
+%{gitexecdir}/*p4*
+%{gitexecdir}/mergetools/p4merge
+%{_pkgdocdir}/*p4*.txt
+%{?with_docs:%{_mandir}/man1/*p4*.1*}
+%{?with_docs:%{_pkgdocdir}/*p4*.html}
+%endif
+# endif with p4
+
+%files -n perl-Git -f perl-git-files
+%{?with_docs:%{_mandir}/man3/Git.3pm*}
+
+%files -n perl-Git-SVN -f perl-git-svn-files
+
+%files subtree
+%{gitexecdir}/git-subtree
+%{_pkgdocdir}/git-subtree.txt
+%{?with_docs:%{_mandir}/man1/git-subtree.1*}
+%{?with_docs:%{_pkgdocdir}/git-subtree.html}
+
+%files svn
+%{gitexecdir}/git-svn
+%{_pkgdocdir}/git-svn.txt
+%{?with_docs:%{_mandir}/man1/git-svn.1*}
+%{?with_docs:%{_pkgdocdir}/git-svn.html}
+
+%changelog
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 2.31.1-2.2
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Tue Jun 15 2021 Mohan Boddu <mboddu@redhat.com> - 2.31.1-2.1
+- Rebuilt for RHEL 9 BETA for openssl 3.0
+
+Related: rhbz#1971065
+
+* Mon May 03 2021 Ondřej Pohořelský <opohorel@redhat.com> - 2.31.1-2
+- Use HMAC from libcrypto instead of git's implementation 
+- Resolves: #1956345
+
+* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 2.31.1-1.1
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Sat Mar 27 2021 Todd Zullinger <tmz@pobox.com> - 2.31.1-1
+- update to 2.31.1
+
+* Fri Mar 19 2021 Todd Zullinger <tmz@pobox.com> - 2.31.0-2
+- fix git bisect with annotaged tags
+
+* Mon Mar 15 2021 Todd Zullinger <tmz@pobox.com> - 2.31.0-1
+- update to 2.31.0
+
+* Tue Mar 09 2021 Todd Zullinger <tmz@pobox.com> - 2.30.2-1
+- update to 2.30.2 (CVE-2021-21300)
+
+* Tue Mar 02 2021 Todd Zullinger <tmz@pobox.com> - 2.30.1-3
+- use %%{gpgverify} macro to verify tarball signature
+
+* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.30.1-2.1
+- Rebuilt for updated systemd-rpm-macros
+  See https://pagure.io/fesco/issue/2583.
+
+* Thu Feb 18 2021 Ondřej Pohořelský <opohorel@redhat.com - 2.30.1-2
+- include git-daemon in git-all meta-package
+
+* Thu Feb 18 2021 Todd Zullinger <tmz@pobox.com>
+- re-enable t7812-grep-icase-non-ascii on s390x
+
+* Tue Feb 09 2021 Todd Zullinger <tmz@pobox.com> - 2.30.1-1
+- update to 2.30.1
+
+* Mon Feb 08 2021 Ondřej Pohořelský <opohorel@redhat.com> - 2.30.0-2
+- add rhel 9 conditional to require httpd instead of lighttpd in git-instaweb
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.30.0-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Mon Dec 28 2020 Todd Zullinger <tmz@pobox.com> - 2.30.0-1
+- update to 2.30.0
+
+* Wed Dec 23 2020 Todd Zullinger <tmz@pobox.com> - 2.30.0-0.2.rc2
+- update to 2.30.0-rc2
+
+* Sat Dec 19 2020 Todd Zullinger <tmz@pobox.com> - 2.30.0-0.1.rc1
+- update to 2.30.0-rc1
+
+* Mon Dec 14 2020 Todd Zullinger <tmz@pobox.com> - 2.30.0-0.0.rc0
+- update to 2.30.0-rc0
+
+* Sun Dec 06 2020 Todd Zullinger <tmz@pobox.com> - 2.29.2-4
+- move git-difftool to git-core, it does not require perl
+
+* Wed Nov 25 2020 Todd Zullinger <tmz@pobox.com> - 2.29.2-3
+- apply upstream patch to resolve git fast-import memory leak (#1900335)
+- add epel-rpm-macros BuildRequires on EL-7 (#1872865)
+
+* Sat Nov 07 2020 Todd Zullinger <tmz@pobox.com> - 2.29.2-2
+- apply upstream patch to resolve git log segfault (#1791810)
+
+* Thu Oct 29 2020 Todd Zullinger <tmz@pobox.com> - 2.29.2-1
+- update to 2.29.2
+
+* Sat Oct 24 2020 Todd Zullinger <tmz@pobox.com> - 2.29.1-1
+- update to 2.29.1
+- fix bugs in am/rebase handling of committer ident/date
+
+* Mon Oct 19 2020 Todd Zullinger <tmz@pobox.com> - 2.29.0-1
+- update to 2.29.0
+
+* Thu Oct 15 2020 Todd Zullinger <tmz@pobox.com> - 2.29.0-0.2.rc2
+- update to 2.29.0-rc2
+
+* Fri Oct 09 2020 Todd Zullinger <tmz@pobox.com> - 2.29.0-0.1.rc1
+- update to 2.29.0-rc1
+- drop emacs-git stub for fedora >= 34 (#1882360)
+- adjust python hashbang in contrib/hg-to-git, it supports python3
+
+* Mon Oct 05 2020 Todd Zullinger <tmz@pobox.com> - 2.29.0-0.0.rc0
+- update to 2.29.0-rc0
+
+* Mon Jul 27 2020 Todd Zullinger <tmz@pobox.com> - 2.28.0-1
+- update to 2.28.0
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.28.0-0.3.rc2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Wed Jul 22 2020 Todd Zullinger <tmz@pobox.com> - 2.28.0-0.2.rc2
+- update to 2.28.0-rc2
+
+* Sat Jul 18 2020 Todd Zullinger <tmz@pobox.com> - 2.28.0-0.1.rc1
+- update to 2.28.0-rc1
+
+* Thu Jul 09 2020 Todd Zullinger <tmz@pobox.com> - 2.28.0-0.0.rc0
+- update to 2.28.0-rc0
+
+* Fri Jun 26 2020 Jitka Plesnikova <jplesnik@redhat.com> - 2.27.0-1.2
+- Perl 5.32 re-rebuild of bootstrapped packages
+
+* Tue Jun 23 2020 Jitka Plesnikova <jplesnik@redhat.com> - 2.27.0-1.1
+- Perl 5.32 rebuild
+
+* Mon Jun 01 2020 Todd Zullinger <tmz@pobox.com> - 2.27.0-1
+- update to 2.27.0
+
+* Tue May 26 2020 Todd Zullinger <tmz@pobox.com> - 2.27.0-0.2.rc2
+- update to 2.27.0-rc2
+
+* Thu May 21 2020 Todd Zullinger <tmz@pobox.com> - 2.27.0-0.1.rc1
+- update to 2.27.0-rc1
+
+* Thu May 21 2020 Merlin Mathesius <mmathesi@redhat.com> - 2.26.2-2
+- Minor conditional fixes for ELN
+
+* Mon Apr 20 2020 Todd Zullinger <tmz@pobox.com> - 2.26.2-1
+- update to 2.26.2 (CVE-2020-11008)
+
+* Tue Apr 14 2020 Todd Zullinger <tmz@pobox.com> - 2.26.1-1
+- update to 2.26.1 (CVE-2020-5260)
+
+* Sat Apr 04 2020 Todd Zullinger <tmz@pobox.com> - 2.26.0-2
+- fix issue with fast-forward rebases when rebase.abbreviateCommands is set
+- fix/quiet rpmlint issues from libsecret split
+
+* Thu Apr 02 2020 Björn Esser <besser82@fedoraproject.org> - 2.26.0-1.1
+- Fix string quoting for rpm >= 4.16
+
+* Sun Mar 22 2020 Todd Zullinger <tmz@pobox.com> - 2.26.0-1
+- update to 2.26.0
+
+* Mon Mar 16 2020 Todd Zullinger <tmz@pobox.com> - 2.26.0-0.3.rc2
+- update to 2.26.0-rc2
+
+* Thu Mar 12 2020 Todd Zullinger <tmz@pobox.com> - 2.26.0-0.2.rc1
+- remove s390x gcc10 workaround (#1799408)
+
+* Tue Mar 10 2020 Todd Zullinger <tmz@pobox.com> - 2.26.0-0.1.rc1
+- update to 2.26.0-rc1
+- adjust make test options
+- add missing build deps for tests
+
+* Fri Mar 06 2020 Todd Zullinger <tmz@pobox.com> - 2.26.0-0.0.rc0
+- update to 2.26.0-rc0
+
+* Wed Feb 26 2020 Todd Zullinger <tmz@pobox.com> - 2.25.1-4
+- use Asciidoctor to build documentation when possible
+
+* Sat Feb 22 2020 Todd Zullinger <tmz@pobox.com> - 2.25.1-3
+- work around issue on s390x with gcc10 (#1799408)
+
+* Wed Feb 19 2020 Todd Zullinger <tmz@pobox.com> - 2.25.1-2
+- split libsecret credential helper into a subpackage (#1804741)
+- consolidate macros for Fedora/EPEL
+- remove unneeded gnome-keyring obsoletes
+
+* Mon Feb 17 2020 Todd Zullinger <tmz@pobox.com> - 2.25.1-1
+- update to 2.25.1
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.25.0-2.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Tue Jan 14 2020 Tom Stellard <tstellar@redhat.com> - 2.25.0-2
+- Use make_build macro when running tests
+
+* Tue Jan 14 2020 Todd Zullinger <tmz@pobox.com> - 2.25.0-1
+- update to 2.25.0
+
+* Thu Jan 09 2020 Todd Zullinger <tmz@pobox.com> - 2.25.0-0.2.rc2
+- update to 2.25.0-rc2
+
+* Fri Jan 03 2020 Todd Zullinger <tmz@pobox.com> - 2.25.0-0.1.rc1
+- update to 2.25.0-rc1
+- only add highlight test BR for ppc64le/x86_64 on EL7+
+
+* Wed Dec 25 2019 Todd Zullinger <tmz@pobox.com> - 2.25.0-0.0.rc0
+- update to 2.25.0-rc0
+
+* Thu Dec 19 2019 Todd Zullinger <tmz@pobox.com> - 2.24.1-2
+- fix git-daemon systemd scriptlets (#1785088)
+
+* Tue Dec 10 2019 Todd Zullinger <tmz@pobox.com> - 2.24.1-1
+- update to 2.24.1 (CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351,
+  CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387)
+
+* Wed Dec 04 2019 Todd Zullinger <tmz@pobox.com> - 2.24.0-2
+- restore jgit BR for use in tests
+
+* Mon Nov 04 2019 Todd Zullinger <tmz@pobox.com> - 2.24.0-1
+- update to 2.24.0
+
+* Thu Oct 31 2019 Todd Zullinger <tmz@pobox.com> - 2.24.0-0.2.rc2
+- update to 2.24.0-rc2
+
+* Sun Oct 27 2019 Todd Zullinger <tmz@pobox.com> - 2.24.0-0.1.rc1.1
+- disable linkchecker on all EL releases
+
+* Thu Oct 24 2019 Todd Zullinger <tmz@pobox.com> - 2.24.0-0.1.rc1
+- update to 2.24.0-rc1
+- skip failing test in t7812-grep-icase-non-ascii on s390x
+- gitk: add Requires: git-gui (#1765113)
+
+* Sat Oct 19 2019 Todd Zullinger <tmz@pobox.com> - 2.24.0-0.0.rc0
+- update to 2.24.0-rc0
+- fix t0500-progress-display on big-endian arches
+
+* Fri Aug 16 2019 Todd Zullinger <tmz@pobox.com> - 2.23.0-1
+- Update to 2.23.0
+
+* Sun Aug 11 2019 Todd Zullinger <tmz@pobox.com> - 2.23.0-0.2.rc2
+- Update to 2.23.0-rc2
+
+* Fri Aug 02 2019 Todd Zullinger <tmz@pobox.com> - 2.23.0-0.1.rc1
+- Update to 2.23.0-rc1
+
+* Mon Jul 29 2019 Todd Zullinger <tmz@pobox.com> - 2.23.0-0.0.rc0
+- Update to 2.23.0-rc0
+
+* Thu Jul 25 2019 Todd Zullinger <tmz@pobox.com> - 2.22.0-2
+- completion: do not cache if --git-completion-helper fails
+- avoid trailing comments in spec file
+- drop jgit on Fedora > 30
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.22.0-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Fri Jun 07 2019 Todd Zullinger <tmz@pobox.com> - 2.22.0-1
+- Update to 2.22.0
+
+* Tue Jun 04 2019 Jitka Plesnikova <jplesnik@redhat.com> - 2.22.0-0.7.rc3
+- Perl 5.30 re-rebuild updated packages
+
+* Mon Jun 03 2019 Todd Zullinger <tmz@pobox.com> - 2.22.0-0.6.rc3
+- Update to 2.22.0-rc3
+
+* Sun Jun 02 2019 Jitka Plesnikova <jplesnik@redhat.com> - 2.22.0-0.5.rc2
+- Perl 5.30 re-rebuild of bootstrapped packages
+
+* Sat Jun 01 2019 Jitka Plesnikova <jplesnik@redhat.com> - 2.22.0-0.4.rc2
+- Perl 5.30 rebuild
+
+* Thu May 30 2019 Todd Zullinger <tmz@pobox.com> - 2.22.0-0.3.rc2
+- Update to 2.22.0-rc1
+
+* Fri May 24 2019 Todd Zullinger <tmz@pobox.com> - 2.22.0-0.2.rc1
+- Apply upstream fixes for diff-parseopt issues on s390x
+
+* Sun May 19 2019 Todd Zullinger <tmz@pobox.com> - 2.22.0-0.1.rc1
+- Update to 2.22.0-rc1
+
+* Mon May 13 2019 Todd Zullinger <tmz@pobox.com> - 2.22.0-0.0.rc0
+- Update to 2.22.0-rc0
+- Ensure a consistent format for test output
+- Improve JGIT test prereq (jgit on Fedora >= 30 is broken)
+- Add perl(JSON::PP) BuildRequires for trace2 tests
+
+* Sun Feb 24 2019 Todd Zullinger <tmz@pobox.com> - 2.21.0-1
+- Update to 2.21.0
+- Move gitweb manpages to gitweb package
+- Link git-citool to git-gui if they are identical
+
+* Tue Feb 19 2019 Todd Zullinger <tmz@pobox.com> - 2.21.0-0.2.rc2
+- Update to 2.21.0.rc2
+
+* Fri Feb 15 2019 Todd Zullinger <tmz@pobox.com>
+- Set SOURCE_DATE_EPOCH and TZ to improve build reproducibility
+
+* Wed Feb 13 2019 Todd Zullinger <tmz@pobox.com> - 2.21.0-0.1.rc1
+- Update to 2.21.0.rc1
+
+* Thu Feb 07 2019 Todd Zullinger <tmz@pobox.com> - 2.21.0-0.0.rc0
+- Update to 2.21.0.rc0
+- Remove %%changelog entries prior to 2017
+
+* Thu Jan 31 2019 Todd Zullinger <tmz@pobox.com> - 2.20.1-2
+- Remove extraneous pcre BuildRequires
+- Add additional BuildRequires for i18n locales used in tests
+- Replace gitweb home-link with inline sed
+- Add gnupg2-smime and perl JSON BuildRequires for tests
+- Work around gpg-agent issues in the test suite
+- Drop gnupg BuildRequires on fedora >= 30
+- Fix formatting of contrib/{contacts,subtree} docs
+- Use %%{build_cflags} and %%{build_ldflags}
+- Drop unneeded TEST_SHELL_PATH make variable
+
+* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.20.1-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Sat Dec 15 2018 Todd Zullinger <tmz@pobox.com> - 2.20.1-1
+- Update to 2.20.1
+
+* Sun Dec 09 2018 Todd Zullinger <tmz@pobox.com> - 2.20.0-1
+- Update to 2.20.0
+
+* Sat Dec 01 2018 Todd Zullinger <tmz@pobox.com> - 2.20.0-0.2.rc2
+- Update to 2.20.0.rc2
+
+* Wed Nov 21 2018 Todd Zullinger <tmz@pobox.com> - 2.20.0-0.1.rc1
+- Update to 2.20.0.rc1
+
+* Wed Nov 21 2018 Todd Zullinger <tmz@pobox.com> - 2.19.2-1
+- Update to 2.19.2
+
+* Tue Oct 23 2018 Todd Zullinger <tmz@pobox.com>
+- Skip test BuildRequires when --without tests is used
+- Simplify gpg verification of Source0
+- Use %%{without ...} macro consistently
+- Add comments to %%endif statements
+- Add glibc-langpack-en BuildRequires for en_US.UTF-8 locale
+
+* Mon Oct 22 2018 Pavel Cahyna <pcahyna@redhat.com> - 2.19.1-2
+- Update condition for the t5540-http-push-webdav test for future RHEL
+
+* Fri Oct 05 2018 Todd Zullinger <tmz@pobox.com> - 2.19.1-1
+- Update to 2.19.1 (CVE-2018-17456)
+
+* Mon Sep 10 2018 Todd Zullinger <tmz@pobox.com> - 2.19.0-1
+- Update to 2.19.0
+
+* Fri Sep 07 2018 Todd Zullinger <tmz@pobox.com> - 2.19.0-0.5.rc2
+- Fix smart-http test due to changes in cookie sort order in curl-7.61.1
+- Add --without tests option to skip tests
+
+* Thu Sep 06 2018 Sebastian Kisela <skisela@redhat.com> - 2.19.0-0.4.rc2
+- Move instaweb to a separate subpackage
+- Fix builds without docs and without cvs and/or p4
+
+* Tue Sep 04 2018 Todd Zullinger <tmz@pobox.com> - 2.19.0-0.3.rc2
+- Update to 2.19.0.rc2
+- Drop unnecessary Conflicts: when git-p4 is disabled
+- Obsolete git-cvs if it's disabled
+- Remove contrib/fast-import/import-zips.py, contrib/hg-to-git, and
+  contrib/svn-fe which all require python2
+- Drop git-gnome-keyring obsolete for fedora > 30
+
+* Tue Sep 04 2018 Nils Philippsen <nils@redhat.com> - 2.19.0-0.2.rc1
+- obsolete git-p4 if it's disabled
+
+* Tue Aug 28 2018 Todd Zullinger <tmz@pobox.com> - 2.19.0-0.1.rc1
+- Update to 2.19.0.rc1
+
+* Mon Aug 20 2018 Todd Zullinger <tmz@pobox.com> - 2.19.0-0.0.rc0
+- Update to 2.19.0.rc0
+
+* Mon Aug 20 2018 Todd Zullinger <tmz@pobox.com> - 2.18.0-2.5
+- Remove git-remote-testsvn, make git-svn noarch
+- Restore fixed contrib/credential/netrc tests
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.18.0-2.4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Tue Jul 03 2018 Petr Pisar <ppisar@redhat.com> - 2.18.0-2.3
+- Perl 5.28 rebuild
+
+* Sun Jul 01 2018 Jitka Plesnikova <jplesnik@redhat.com> - 2.18.0-2.2
+- Perl 5.28 re-rebuild of bootstrapped packages
+
+* Fri Jun 29 2018 Jitka Plesnikova <jplesnik@redhat.com> - 2.18.0-2.1
+- Perl 5.28 rebuild
+
+* Mon Jun 25 2018 Pavel Cahyna <pcahyna@redhat.com> - 2.18.0-2
+- Fix build --without cvs
+
+* Wed Jun 20 2018 Todd Zullinger <tmz@pobox.com> - 2.18.0-1
+- Update to 2.18.0
+
+* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 2.18.0-0.3.rc2
+- Rebuilt for Python 3.7
+
+* Wed Jun 13 2018 Todd Zullinger <tmz@pobox.com> - 2.18.0-0.2.rc2
+- Update to 2.18.0-rc2
+- Apply upstream zlib buffer handling patch (#1582555)
+
+* Wed Jun 06 2018 Todd Zullinger <tmz@pobox.com>
+- Include git-contacts, SubmittingPatches suggests it to users
+- Build git-subtree docs in %%build
+
+* Mon Jun 04 2018 Todd Zullinger <tmz@pobox.com> - 2.18.0-0.1.rc1
+- Update to 2.18.0-rc1
+- Drop flaky & out-of-place netrc credential helper tests
+
+* Fri Jun 01 2018 Todd Zullinger <tmz@pobox.com> - 2.18.0-0.0.rc0.1
+- add -p: fix counting empty context lines in edited patches
+
+* Wed May 30 2018 Todd Zullinger <tmz@pobox.com> - 2.18.0-0.0.rc0
+- Update to 2.18.0-rc0
+- Use new INSTALL_SYMLINKS setting
+
+* Wed May 30 2018 Todd Zullinger <tmz@pobox.com> - 2.17.1-3
+- Use %%apply_patch for aarch64 zlib patch, return to %%autosetup
+- Disable jgit tests on s390x, they're unreliable
+- Use %%make_build and %%make_install
+
+* Tue May 29 2018 Todd Zullinger <tmz@pobox.com> - 2.17.1-2
+- packfile: Correct zlib buffer handling (#1582555)
+
+* Tue May 29 2018 Todd Zullinger <tmz@pobox.com> - 2.17.1-1
+- Update to 2.17.1 (CVE-2018-11233, CVE-2018-11235)
+
+* Thu May 24 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-4
+- Fix segfault in rev-parse with invalid input (#1581678)
+- Move TEST_SHELL_PATH setting to config.mak
+
+* Mon Apr 16 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-3
+- Move linkcheck macro to existing fedora/rhel > 7 block
+- Re-enable t5000-tar-tree.sh test on f28
+
+* Fri Apr 13 2018 Pavel Cahyna <pcahyna@redhat.com>
+- Use BuildRequires: perl-interpreter per the packaging guidelines
+- Update conditions for future RHEL
+
+* Tue Apr 10 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-2
+- Require perl-generators on EL > 7
+
+* Mon Apr 09 2018 Todd Zullinger <tmz@pobox.com>
+- daemon: use --log-destination=stderr with systemd
+- daemon: fix condition for redirecting stderr
+- git-svn: avoid uninitialized value warning
+
+* Sun Apr 08 2018 Todd Zullinger <tmz@pobox.com>
+- Clean up redundant and unneeded Requires
+
+* Sat Apr 07 2018 Todd Zullinger <tmz@pobox.com>
+- Remove Git::LoadCPAN to ensure we use only system perl modules
+
+* Mon Apr 02 2018 Todd Zullinger <tmz@pobox.com>
+- Allow git-p4 subpackage to be toggled via --with/--without
+- Use %%bcond_(with|without) to enable/disable python3
+- Add support for disabling python2
+
+* Mon Apr 02 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-1
+- Update to 2.17.0
+
+* Wed Mar 28 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-0.2.rc2
+- Update to 2.17.0-rc2
+
+* Tue Mar 27 2018 Todd Zullinger <tmz@pobox.com>
+- Allow cvs subpackage to be toggled via --with/--without
+
+* Tue Mar 27 2018 Joe Orton <jorton@redhat.com>
+- Disable CVS support on EL > 7
+
+* Tue Mar 27 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-0.1.rc1.2
+- Add missing perl(Mail::Address) requirement (#1561086)
+
+* Thu Mar 22 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-0.1.rc1.1
+- Drop .py extension from contrib/hooks/multimail/git_multimail.py
+- Remove unnecessary "chmod +x contrib/hooks/*"
+
+* Wed Mar 21 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-0.1.rc1
+- Update to 2.17.0-rc1
+
+* Fri Mar 16 2018 Todd Zullinger <tmz@pobox.com>
+- Add findutils BuildRequires, improve 'find | xargs' calls
+
+* Thu Mar 15 2018 Todd Zullinger <tmz@pobox.com> - 2.17.0-0.0.rc0
+- Update to 2.17.0-rc0
+- Adjust for simplified perl install
+- Require git-core rather than git for git-daemon
+- Rename gitweb httpd config file
+- Install contrib/diff-highlight (#1550251)
+
+* Thu Mar 15 2018 Todd Zullinger <tmz@pobox.com>
+- Use symlinks instead of hardlinks for installed binaries
+
+* Fri Feb 23 2018 Todd Zullinger <tmz@pobox.com>
+- Improve hardening flags for EL-6 & EL-7
+
+* Fri Feb 16 2018 Todd Zullinger <tmz@pobox.com> - 2.16.2-1
+- Update to 2.16.2
+- Add gawk, gcc, make, and sed BuildRequires
+
+* Wed Feb 07 2018 Todd Zullinger <tmz@pobox.com> - 2.16.1-3
+- Order %%files and %%packages sections by name
+- Remove obsolete %%defattr
+- Don't package contrib/svn-fe in %%doc
+- Split git-subtree into a separate package
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.16.1-2.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Mon Jan 29 2018 Todd Zullinger <tmz@pobox.com> - 2.16.1-2
+- git-svn: avoid segfaults in 'git svn branch', re-enable t9128, t9141, and
+  t9167
+- Drop obsolete BuildRoot, Group, %%clean, and buildroot cleanup
+
+* Mon Jan 22 2018 Todd Zullinger <tmz@pobox.com> - 2.16.1-1
+- Update to 2.16.1
+- Avoid python dependency in git-core (#1536471)
+
+* Thu Jan 18 2018 Todd Zullinger <tmz@pobox.com> - 2.16.0-1
+- Update to 2.16.0
+- Use 'prove' as test harness, enable shell tracing
+- Disable t5000-tar-tree.sh on x86 in f28
+
+* Fri Jan 12 2018 Todd Zullinger <tmz@pobox.com>
+- Add %%{emacs_filesystem} to simplify emacs support
+- Use .in template for git@.service to ensure paths are substituted
+
+* Thu Jan 11 2018 Todd Zullinger <tmz@pobox.com>
+- Update BuildRequires for tests
+
+* Mon Jan 08 2018 Todd Zullinger <tmz@pobox.com>
+- Avoid excluding non-existent .py[co] files in %%doc
+- Remove obsolete gnome-keyring credential helper
+
+* Sun Jan 07 2018 Todd Zullinger <tmz@pobox.com>
+- Explicitly enable tests which may be skipped opportunistically
+
+* Sat Dec 30 2017 Todd Zullinger <tmz@pobox.com>
+- Fix perl requires filtering on EL-6
+
+* Thu Nov 30 2017 Todd Zullinger <tmz@pobox.com> - 2.15.1-3
+- Include verbose logs in build output for 'make test' failures
+- Use %%autosetup macro to unpack and patch source
+- Remove second make invocation for doc build/install
+- Fix builds using '--without docs'
+- Mark git-core-docs sub-package noarch
+- Avoid failures in svnserve tests when run in parallel
+- Run tests in parallel by default on Fedora
+- Skip 'git svn branch' tests which fail intermittently
+- Re-enable grep tests on s390x
+
+* Wed Nov 29 2017 Todd Zullinger <tmz@pobox.com> - 2.15.1-2
+- Fix debuginfo for gnome-keyring and libsecret credential helpers
+
+* Tue Nov 28 2017 Todd Zullinger <tmz@pobox.com> - 2.15.1-1
+- Update to 2.15.1
+
+* Tue Nov 21 2017 Todd Zullinger <tmz@pobox.com>
+- Add tcl/tk BuildRequires
+- Enable support for release candidate builds
+
+* Tue Nov 07 2017 Todd Zullinger <tmz@pobox.com> - 2.15.0-2
+- Fix git-clone memory exhaustion (CVE-2017-15298)
+  Resolves: #1510455, #1510457
+- Disable cross-directory hardlinks
+- Drop ancient obsoletes for git and git-arch
+- Update summary/description of numerous subpackages
+- Fix shebang in a few places to silence rpmlint complaints
+- Fix t9020-remote-svn failure when setting PYTHON_PATH
+- Rename %%gitcoredir to %%gitexecdir; upstream uses the latter
+- Move commands which no longer require perl into git-core
+- Move filter-branch out of core, it needs perl now
+- Improve test suite coverage
+
+* Mon Oct 30 2017 Todd Zullinger <tmz@pobox.com> - 2.15.0-1
+- Update to 2.15.0
+
+* Mon Oct 23 2017 Todd Zullinger <tmz@pobox.com> - 2.14.3-1
+- Update to 2.14.3
+
+* Tue Sep 26 2017 Todd Zullinger <tmz@pobox.com> - 2.14.2-2
+- Update to 2.14.2
+
+* Thu Aug 10 2017 Todd Zullinger <tmz@pobox.com> - 2.14.1-2
+- Rebuild for rpm-4.14 bug (#1480407)
+
+* Thu Aug 10 2017 Todd Zullinger <tmz@pobox.com> - 2.14.1-1
+- Update to 2.14.1 (resolves CVE-2017-1000117)
+
+* Tue Aug 08 2017 Iryna Shcherbina <ishcherb@redhat.com> - 2.14.0-2
+- Add a build-time dependency on python2-devel for p4
+  Resolves: #1479713
+- Skip all grep tests on s390x for now because it failes intermittently
+
+* Fri Aug 04 2017 Todd Zullinger <tmz@pobox.com> - 2.14.0-1
+- Update to 2.14.0
+- Use pcre2 library
+- git-p4: explicitly require python2
+
+* Tue Aug 01 2017 Todd Zullinger <tmz@pobox.com> - 2.13.4-1
+- Update to 2.13.4
+- Remove EL-5 and old Fedora conditionals
+
+* Sun Jul 30 2017 Florian Weimer <fweimer@redhat.com> - 2.13.3-3
+- Rebuild with binutils fix for ppc64le (#1475636)
+
+* Thu Jul 20 2017 Petr Stodulka <pstodulk@redhat.com> - 2.13.3-2
+- Move documentation files from all subpackages into the %%{_pkgdocdir}
+  directory, so links inside doc and man files are correct
+  Resolves: #1357438
+- Quiet a few rpmlint complaints regarding hidden files in contrib dir
+- Remove explicit libcurl requirement from git-core
+
+* Thu Jul 13 2017 Gwyn Ciesla <limburgher@gmail.com> - 2.13.3-1
+- Update to 2.13.3
+
+* Sun Jun 25 2017 Todd Zullinger <tmz@pobox.com> - 2.13.2-1
+- Update to 2.13.2
+- Skip grep tests which fail intermittently on s390x
+
+* Wed Jun 07 2017 Jitka Plesnikova <jplesnik@redhat.com> - 2.13.1-2
+- Perl 5.26 re-rebuild of bootstrapped packages
+
+* Mon Jun 05 2017 Todd Zullinger <tmz@pobox.com> - 2.13.1-1
+- Update to 2.13.1
+
+* Sun Jun 04 2017 Jitka Plesnikova <jplesnik@redhat.com> - 2.13.0-3
+- Perl 5.26 rebuild
+
+* Wed May 17 2017 Todd Zullinger <tmz@pobox.com> - 2.13.0-2
+- Use default, collision-detecting SHA1 implementation
+
+* Tue May 09 2017 Todd Zullinger <tmz@pobox.com> - 2.13.0-1
+- Update to 2.13.0 (resolves CVE-2017-8386)
+
+* Wed Mar 29 2017 Gwyn Ciesla <limburgher@gmail.com> - 2.12.2-1
+- Update to 2.12.2
+
+* Tue Mar 21 2017 Gwyn Ciesla <limburgher@gmail.com> - 2.12.1-1
+- Update to 2.12.1
+
+* Mon Feb 27 2017 Jon Ciesla <limburgher@gmail.com> - 2.12.0-1
+- Update to 2.12.0
+
+* Fri Feb 17 2017 Petr Stodulka <pstodulk@redhat.com> - 2.11.1-3
+- remove non-ASCII characters from description and title of packages
+- fix requiremets
+- fix spec to be compatible for other systems
+- remove deprecated credential-gnome-keyring
+
+* Fri Feb 17 2017 Todd Zullinger <tmz@pobox.com> - 2.11.1-3
+- Remove unnecessary rsync requirement from git-core
+- Move gnome-keyring credential helper from git-core to git
+- Enable libsecret credential helper
+- Run git test suite
+- Use %%{_mandir} in git/git-core file list filters
+- Fix version of emacs-git and emacs-git-el provides
+- Clean up contrib/{credential,subtree} to avoid cruft in git-core-doc
+- Fix a number of macro-in-comment warnings from rpmlint
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.11.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Fri Feb 03 2017 Jon Ciesla <limburgher@gmail.com> - 2.11.1-1
+- Update to 2.11.1