diff --git a/.gitignore b/.gitignore index c6d0c92..77221d1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ *~ -*.gpg *.rpm -*.sign +*.tar.gz *.tar.xz /.build*.log /git-*/ -/results_git/ diff --git a/.mailmap b/.mailmap deleted file mode 100644 index 88615c5..0000000 --- a/.mailmap +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - -James Bowes - -Josh Boyer - - - - - - - - - diff --git a/0001-Drop-DESTDIR-from-python-instlibdir.patch b/0001-Drop-DESTDIR-from-python-instlibdir.patch new file mode 100644 index 0000000..b6e7120 --- /dev/null +++ b/0001-Drop-DESTDIR-from-python-instlibdir.patch @@ -0,0 +1,29 @@ +From d40d33173dc24d9b7ad6f5071994f90b5f9a71e8 Mon Sep 17 00:00:00 2001 +From: Todd Zullinger +Date: Wed, 27 Mar 2013 14:01:57 -0400 +Subject: [PATCH] Drop DESTDIR from python instlibdir + +When building packages, we install to DESTDIR but we don't want this to +end up hard-coded in the scripts. + +This needs discussed upstream to find a proper solution. +--- + git_remote_helpers/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/git_remote_helpers/Makefile b/git_remote_helpers/Makefile +index 3d12232..36d40b5 100644 +--- a/git_remote_helpers/Makefile ++++ b/git_remote_helpers/Makefile +@@ -38,7 +38,7 @@ install: $(pysetupfile) + $(PYTHON_PATH) $(pysetupfile) install --prefix $(DESTDIR_SQ)$(prefix) + + instlibdir: $(pysetupfile) +- @echo "$(DESTDIR_SQ)$(prefix)/$(PYLIBDIR)" ++ @echo "$(prefix)/$(PYLIBDIR)" + + clean: + $(QUIET)$(PYTHON_PATH) $(pysetupfile) $(QUIETSETUP) clean -a +-- +1.8.1 + diff --git a/0001-Fix-CVE-2016-2315-CVE-2016-2324.patch b/0001-Fix-CVE-2016-2315-CVE-2016-2324.patch new file mode 100644 index 0000000..082a1a2 --- /dev/null +++ b/0001-Fix-CVE-2016-2315-CVE-2016-2324.patch @@ -0,0 +1,116 @@ +From 5857966a36f9c553e73e375455a246896aeba73f Mon Sep 17 00:00:00 2001 +From: Petr Stodulka +Date: Fri, 18 Mar 2016 17:14:32 +0100 +Subject: [PATCH] Fix CVE-2016-2315 CVE-2016-2324 + +- added upstream macros for detecting size_t overflow (much more just + for easier related changes in future, if we want to do some yet) +- upstream solution removes function path_name() and modify all related + part of code to replace this function. However, it's too hard for + backport to such old version of git without unchanged behaviour, + so application just die with error message instead. +--- + diff.h | 4 ++-- + git-compat-util.h | 34 ++++++++++++++++++++++++++++++++++ + revision.c | 11 ++++++++--- + 3 files changed, 44 insertions(+), 5 deletions(-) + +diff --git a/diff.h b/diff.h +index 78b4091..18dabf0 100644 +--- a/diff.h ++++ b/diff.h +@@ -201,8 +201,8 @@ struct combine_diff_path { + } parent[FLEX_ARRAY]; + }; + #define combine_diff_path_size(n, l) \ +- (sizeof(struct combine_diff_path) + \ +- sizeof(struct combine_diff_parent) * (n) + (l) + 1) ++ st_add4(sizeof(struct combine_diff_path), (l), 1, \ ++ st_mult(sizeof(struct combine_diff_parent), (n))) + + extern void show_combined_diff(struct combine_diff_path *elem, int num_parent, + int dense, struct rev_info *); +diff --git a/git-compat-util.h b/git-compat-util.h +index ad47624..77a7031 100644 +--- a/git-compat-util.h ++++ b/git-compat-util.h +@@ -46,6 +46,14 @@ + #define unsigned_add_overflows(a, b) \ + ((b) > maximum_unsigned_value_of_type(a) - (a)) + ++/* ++ * Returns true if the multiplication of "a" and "b" will ++ * overflow. The types of "a" and "b" must match and must be unsigned. ++ * Note that this macro evaluates "a" twice! ++ */ ++#define unsigned_mult_overflows(a, b) \ ++ ((a) && (b) > maximum_unsigned_value_of_type(a) / (a)) ++ + #ifdef __GNUC__ + #define TYPEOF(x) (__typeof__(x)) + #else +@@ -490,6 +498,32 @@ static inline void *gitmempcpy(void *dest, const void *src, size_t n) + } + #endif + ++static inline size_t st_add(size_t a, size_t b) ++{ ++ if (unsigned_add_overflows(a, b)) ++ die("size_t overflow: %"PRIuMAX" + %"PRIuMAX, ++ (uintmax_t)a, (uintmax_t)b); ++ return a + b; ++} ++#define st_add3(a,b,c) st_add((a),st_add((b),(c))) ++#define st_add4(a,b,c,d) st_add((a),st_add3((b),(c),(d))) ++ ++static inline size_t st_mult(size_t a, size_t b) ++{ ++ if (unsigned_mult_overflows(a, b)) ++ die("size_t overflow: %"PRIuMAX" * %"PRIuMAX, ++ (uintmax_t)a, (uintmax_t)b); ++ return a * b; ++} ++ ++static inline size_t st_sub(size_t a, size_t b) ++{ ++ if (a < b) ++ die("size_t underflow: %"PRIuMAX" - %"PRIuMAX, ++ (uintmax_t)a, (uintmax_t)b); ++ return a - b; ++} ++ + #ifdef NO_INET_PTON + int inet_pton(int af, const char *src, void *dst); + #endif +diff --git a/revision.c b/revision.c +index 9df13ca..7e358ef 100644 +--- a/revision.c ++++ b/revision.c +@@ -21,16 +21,21 @@ char *path_name(const struct name_path *path, const char *name) + { + const struct name_path *p; + char *n, *m; +- int nlen = strlen(name); +- int len = nlen + 1; ++ size_t nlen = strlen(name); ++ size_t len = st_add(nlen, 1); ++ ++ if(len >= INT_MAX) ++ die("path_name(): path is too long."); + + for (p = path; p; p = p->up) { + if (p->elem_len) + len += p->elem_len + 1; ++ if(len >= INT_MAX) ++ die("path_name(): path is too long."); + } + n = xmalloc(len); + m = n + len - (nlen + 1); +- strcpy(m, name); ++ memcpy(m, name, nlen + 1); + for (p = path; p; p = p->up) { + if (p->elem_len) { + m -= p->elem_len + 1; +-- +2.8.1 + diff --git a/0001-git-subtree-Use-gitexecdir-instead-of-libexecdir.patch b/0001-git-subtree-Use-gitexecdir-instead-of-libexecdir.patch new file mode 100644 index 0000000..73ae548 --- /dev/null +++ b/0001-git-subtree-Use-gitexecdir-instead-of-libexecdir.patch @@ -0,0 +1,42 @@ +From 86c3e2b5188579bff1ff981910462ad5e563044b Mon Sep 17 00:00:00 2001 +From: Todd Zullinger +Date: Fri, 4 Jan 2013 11:54:21 -0500 +Subject: [PATCH] git-subtree: Use gitexecdir instead of libexecdir + +When the git subtree Makefile includes config.mak from the toplevel, +it's useful to have the same variables set globally applied. Using +gitexecdir instead of libexecdir respects the global settings more +consistently. + +Remove the unused gitdir variable as well. +--- + contrib/subtree/Makefile | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile +index 36ae3e4..f87b945 100644 +--- a/contrib/subtree/Makefile ++++ b/contrib/subtree/Makefile +@@ -2,9 +2,8 @@ + -include ../../config.mak + + prefix ?= /usr/local ++gitexecdir ?= $(prefix)/libexec/git-core + mandir ?= $(prefix)/share/man +-libexecdir ?= $(prefix)/libexec/git-core +-gitdir ?= $(shell git --exec-path) + man1dir ?= $(mandir)/man1 + + gitver ?= $(word 3,$(shell git --version)) +@@ -30,7 +29,7 @@ $(GIT_SUBTREE): $(GIT_SUBTREE_SH) + doc: $(GIT_SUBTREE_DOC) + + install: $(GIT_SUBTREE) +- $(INSTALL) -m 755 $(GIT_SUBTREE) $(DESTDIR)$(libexecdir) ++ $(INSTALL) -m 755 $(GIT_SUBTREE) $(DESTDIR)$(gitexecdir) + + install-doc: install-man + +-- +1.7.6 + diff --git a/0001-submodule-allow-only-certain-protocols-for-submodule.patch b/0001-submodule-allow-only-certain-protocols-for-submodule.patch new file mode 100644 index 0000000..e2067b1 --- /dev/null +++ b/0001-submodule-allow-only-certain-protocols-for-submodule.patch @@ -0,0 +1,104 @@ +From 6d69680505dbbc484178105815ed624fab40b2de Mon Sep 17 00:00:00 2001 +From: Petr Stodulka +Date: Wed, 28 Oct 2015 15:03:01 +0100 +Subject: [PATCH 1/5] submodule: allow only certain protocols for submodule + fetches + +Some protocols (like git-remote-ext) can execute arbitrary +code found in the URL. The URLs that submodules use may come +from arbitrary sources (e.g., .gitmodules files in a remote +repository). Let's restrict submodules to fetching from a +known-good subset of protocols. + +Note that we apply this restriction to all submodule +commands, whether the URL comes from .gitmodules or not. +This is more restrictive than we need to be; for example, in +the tests we run: + + git submodule add ext::... + +which should be trusted, as the URL comes directly from the +command line provided by the user. But doing it this way is +simpler, and makes it much less likely that we would miss a +case. And since such protocols should be an exception +(especially because nobody who clones from them will be able +to update the submodules!), it's not likely to inconvenience +anyone in practice. +--- + git-submodule.sh | 9 +++++++++ + t/t5815-submodule-protos-sh | 43 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 52 insertions(+) + create mode 100644 t/t5815-submodule-protos-sh + +diff --git a/git-submodule.sh b/git-submodule.sh +index 79bfaac..bec3362 100755 +--- a/git-submodule.sh ++++ b/git-submodule.sh +@@ -19,6 +19,15 @@ OPTIONS_SPEC= + . git-parse-remote + require_work_tree + ++# Restrict ourselves to a vanilla subset of protocols; the URLs ++# we get are under control of a remote repository, and we do not ++# want them kicking off arbitrary git-remote-* programs. ++# ++# If the user has already specified a set of allowed protocols, ++# we assume they know what they're doing and use that instead. ++: ${GIT_ALLOW_PROTOCOL=file:git:http:https:ssh} ++export GIT_ALLOW_PROTOCOL ++ + command= + branch= + force= +diff --git a/t/t5815-submodule-protos-sh b/t/t5815-submodule-protos-sh +new file mode 100644 +index 0000000..06f55a1 +--- /dev/null ++++ b/t/t5815-submodule-protos-sh +@@ -0,0 +1,43 @@ ++#!/bin/sh ++ ++test_description='test protocol whitelisting with submodules' ++. ./test-lib.sh ++. "$TEST_DIRECTORY"/lib-proto-disable.sh ++ ++setup_ext_wrapper ++setup_ssh_wrapper ++ ++test_expect_success 'setup repository with submodules' ' ++ mkdir remote && ++ git init remote/repo.git && ++ (cd remote/repo.git && test_commit one) && ++ # submodule-add should probably trust what we feed it on the cmdline, ++ # but its implementation is overly conservative. ++ GIT_ALLOW_PROTOCOL=ssh git submodule add remote:repo.git ssh-module && ++ GIT_ALLOW_PROTOCOL=ext git submodule add "ext::fake-remote %S repo.git" ext-module && ++ git commit -m "add submodules" ++' ++ ++test_expect_success 'clone with recurse-submodules fails' ' ++ test_must_fail git clone --recurse-submodules . dst ++' ++ ++test_expect_success 'setup individual updates' ' ++ rm -rf dst && ++ git clone . dst && ++ git -C dst submodule init ++' ++ ++test_expect_success 'update of ssh allowed' ' ++ git -C dst submodule update ssh-module ++' ++ ++test_expect_success 'update of ext not allowed' ' ++ test_must_fail git -C dst submodule update ext-module ++' ++ ++test_expect_success 'user can override whitelist' ' ++ GIT_ALLOW_PROTOCOL=ext git -C dst submodule update ext-module ++' ++ ++test_done +-- +2.1.0 + diff --git a/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch b/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch deleted file mode 100644 index 733f9c0..0000000 --- a/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 89ccbc15948db9ddbf74530e3fd66dd78ae897ae Mon Sep 17 00:00:00 2001 -From: Todd Zullinger -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ý -Signed-off-by: Todd Zullinger ---- - 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() { diff --git a/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch b/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch deleted file mode 100644 index 37637bc..0000000 --- a/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch +++ /dev/null @@ -1,88 +0,0 @@ -From e90e1068ddc9cfa3badd23b16a46c57ed6d8308a Mon Sep 17 00:00:00 2001 -From: Todd Zullinger -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 ---- - 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&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 +Date: Wed, 28 Oct 2015 15:21:08 +0100 +Subject: [PATCH 2/5] transport: add a protocol-whitelist environment variable + +If we are cloning an untrusted remote repository into a +sandbox, we may also want to fetch remote submodules in +order to get the complete view as intended by the other +side. However, that opens us up to attacks where a malicious +user gets us to clone something they would not otherwise +have access to (this is not necessarily a problem by itself, +but we may then act on the cloned contents in a way that +exposes them to the attacker). + +Ideally such a setup would sandbox git entirely away from +high-value items, but this is not always practical or easy +to set up (e.g., OS network controls may block multiple +protocols, and we would want to enable some but not others). + +We can help this case by providing a way to restrict +particular protocols. We use a whitelist in the environment. +This is more annoying to set up than a blacklist, but +defaults to safety if the set of protocols git supports +grows). If no whitelist is specified, we continue to default +to allowing all protocols (this is an "unsafe" default, but +since the minority of users will want this sandboxing +effect, it is the only sensible one). + +A note on the tests: ideally these would all be in a single +test file, but the git-daemon and httpd test infrastructure +is an all-or-nothing proposition rather than a test-by-test +prerequisite. By putting them all together, we would be +unable to test the file-local code on machines without +apache. +--- + Documentation/git.txt | 32 ++++++++++++++++++++++++++++++++ + connect.c | 4 ++++ + transport-helper.c | 2 ++ + transport.c | 21 ++++++++++++++++++++- + transport.h | 7 +++++++ + 5 files changed, 65 insertions(+), 1 deletion(-) + +diff --git a/Documentation/git.txt b/Documentation/git.txt +index 443d88f..179a0e8 100644 +--- a/Documentation/git.txt ++++ b/Documentation/git.txt +@@ -847,6 +847,38 @@ GIT_LITERAL_PATHSPECS:: + literal paths to Git (e.g., paths previously given to you by + `git ls-tree`, `--raw` diff output, etc). + ++`GIT_ALLOW_PROTOCOL`:: ++ If set, provide a colon-separated list of protocols which are ++ allowed to be used with fetch/push/clone. This is useful to ++ restrict recursive submodule initialization from an untrusted ++ repository. Any protocol not mentioned will be disallowed (i.e., ++ this is a whitelist, not a blacklist). If the variable is not ++ set at all, all protocols are enabled. The protocol names ++ currently used by git are: ++ ++ - `file`: any local file-based path (including `file://` URLs, ++ or local paths) ++ ++ - `git`: the anonymous git protocol over a direct TCP ++ connection (or proxy, if configured) ++ ++ - `ssh`: git over ssh (including `host:path` syntax, ++ `git+ssh://`, etc). ++ ++ - `rsync`: git over rsync ++ ++ - `http`: git over http, both "smart http" and "dumb http". ++ Note that this does _not_ include `https`; if you want both, ++ you should specify both as `http:https`. ++ ++ - any external helpers are named by their protocol (e.g., use ++ `hg` to allow the `git-remote-hg` helper) +++ ++Note that this controls only git's internal protocol selection. ++If libcurl is used (e.g., by the `http` transport), it may ++redirect to other protocols. There is not currently any way to ++restrict this. ++ + + Discussion[[Discussion]] + ------------------------ +diff --git a/connect.c b/connect.c +index f57efd0..6d4ea13 100644 +--- a/connect.c ++++ b/connect.c +@@ -6,6 +6,7 @@ + #include "run-command.h" + #include "remote.h" + #include "url.h" ++#include "transport.h" + + static char *server_capabilities; + +@@ -587,6 +588,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig, + * cannot connect. + */ + char *target_host = xstrdup(host); ++ transport_check_allowed("git"); + if (git_use_proxy(host)) + conn = git_proxy_connect(fd, host); + else +@@ -623,6 +625,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig, + if (protocol == PROTO_SSH) { + const char *ssh = getenv("GIT_SSH"); + int putty = ssh && strcasestr(ssh, "plink"); ++ transport_check_allowed("ssh"); + if (!ssh) ssh = "ssh"; + + *arg++ = ssh; +@@ -639,6 +642,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig, + /* remove repo-local variables from the environment */ + conn->env = local_repo_env; + conn->use_shell = 1; ++ transport_check_allowed("file"); + } + *arg++ = cmd.buf; + *arg = NULL; +diff --git a/transport-helper.c b/transport-helper.c +index 522d791..be8402a 100644 +--- a/transport-helper.c ++++ b/transport-helper.c +@@ -932,6 +932,8 @@ int transport_helper_init(struct transport *transport, const char *name) + struct helper_data *data = xcalloc(sizeof(*data), 1); + data->name = name; + ++ transport_check_allowed(name); ++ + if (getenv("GIT_TRANSPORT_HELPER_DEBUG")) + debug = 1; + +diff --git a/transport.c b/transport.c +index ba5d8af..733717d 100644 +--- a/transport.c ++++ b/transport.c +@@ -894,6 +894,20 @@ static int external_specification_len(const char *url) + return strchr(url, ':') - url; + } + ++void transport_check_allowed(const char *type) ++{ ++ struct string_list allowed = STRING_LIST_INIT_DUP; ++ const char *v = getenv("GIT_ALLOW_PROTOCOL"); ++ ++ if (!v) ++ return; ++ ++ string_list_split(&allowed, v, ':', -1); ++ if (!unsorted_string_list_has_string(&allowed, type)) ++ die("transport '%s' not allowed", type); ++ string_list_clear(&allowed, 0); ++} ++ + struct transport *transport_get(struct remote *remote, const char *url) + { + const char *helper; +@@ -925,12 +939,14 @@ struct transport *transport_get(struct remote *remote, const char *url) + if (helper) { + transport_helper_init(ret, helper); + } else if (!prefixcmp(url, "rsync:")) { ++ transport_check_allowed("rsync"); + ret->get_refs_list = get_refs_via_rsync; + ret->fetch = fetch_objs_via_rsync; + ret->push = rsync_transport_push; + ret->smart_options = NULL; + } else if (is_local(url) && is_file(url) && is_bundle(url, 1)) { + struct bundle_transport_data *data = xcalloc(1, sizeof(*data)); ++ transport_check_allowed("file"); + ret->data = data; + ret->get_refs_list = get_refs_from_bundle; + ret->fetch = fetch_refs_from_bundle; +@@ -942,7 +958,10 @@ struct transport *transport_get(struct remote *remote, const char *url) + || !prefixcmp(url, "ssh://") + || !prefixcmp(url, "git+ssh://") + || !prefixcmp(url, "ssh+git://")) { +- /* These are builtin smart transports. */ ++ /* ++ * These are builtin smart transports; "allowed" transports ++ * will be checked individually in git_connect. ++ */ + struct git_transport_data *data = xcalloc(1, sizeof(*data)); + ret->data = data; + ret->set_option = NULL; +diff --git a/transport.h b/transport.h +index fcb1d25..2beda7d 100644 +--- a/transport.h ++++ b/transport.h +@@ -113,6 +113,13 @@ struct transport { + /* Returns a transport suitable for the url */ + struct transport *transport_get(struct remote *, const char *); + ++/* ++ * Check whether a transport is allowed by the environment, ++ * and die otherwise. type should generally be the URL scheme, ++ * as described in Documentation/git.txt ++ */ ++void transport_check_allowed(const char *type); ++ + /* Transport options which apply to git:// and scp-style URLs */ + + /* The program to use on the remote side to send a pack */ +-- +2.1.0 + diff --git a/0003-t-lib-git-svn-try-harder-to-find-a-port.patch b/0003-t-lib-git-svn-try-harder-to-find-a-port.patch deleted file mode 100644 index 905174e..0000000 --- a/0003-t-lib-git-svn-try-harder-to-find-a-port.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 41423d666fd52eaa6aa2b44a0de1b81d0857ca06 Mon Sep 17 00:00:00 2001 -From: Todd Zullinger -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 ---- - 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 - " - diff --git a/0003-transport-refactor-protocol-whitelist-code.patch b/0003-transport-refactor-protocol-whitelist-code.patch new file mode 100644 index 0000000..ff5416d --- /dev/null +++ b/0003-transport-refactor-protocol-whitelist-code.patch @@ -0,0 +1,107 @@ +From 9b9aabe6ab5d07227c1c02781f03a3c38fbc27b0 Mon Sep 17 00:00:00 2001 +From: Jeff King +Date: Tue, 22 Sep 2015 18:03:49 -0400 +Subject: [PATCH 3/5] transport: refactor protocol whitelist code + +The current callers only want to die when their transport is +prohibited. But future callers want to query the mechanism +without dying. + +Let's break out a few query functions, and also save the +results in a static list so we don't have to re-parse for +each query. + +Based-on-a-patch-by: Blake Burkhart +Signed-off-by: Jeff King +Signed-off-by: Junio C Hamano +--- + transport.c | 38 ++++++++++++++++++++++++++++++-------- + transport.h | 15 +++++++++++++-- + 2 files changed, 43 insertions(+), 10 deletions(-) + +diff --git a/transport.c b/transport.c +index 733717d..2dbdca0 100644 +--- a/transport.c ++++ b/transport.c +@@ -894,18 +894,40 @@ static int external_specification_len(const char *url) + return strchr(url, ':') - url; + } + +-void transport_check_allowed(const char *type) ++static const struct string_list *protocol_whitelist(void) + { +- struct string_list allowed = STRING_LIST_INIT_DUP; +- const char *v = getenv("GIT_ALLOW_PROTOCOL"); ++ static int enabled = -1; ++ static struct string_list allowed = STRING_LIST_INIT_DUP; ++ ++ if (enabled < 0) { ++ const char *v = getenv("GIT_ALLOW_PROTOCOL"); ++ if (v) { ++ string_list_split(&allowed, v, ':', -1); ++ sort_string_list(&allowed); ++ enabled = 1; ++ } else { ++ enabled = 0; ++ } ++ } + +- if (!v) +- return; ++ return enabled ? &allowed : NULL; ++} ++ ++int is_transport_allowed(const char *type) ++{ ++ const struct string_list *allowed = protocol_whitelist(); ++ return !allowed || string_list_has_string(allowed, type); ++} + +- string_list_split(&allowed, v, ':', -1); +- if (!unsorted_string_list_has_string(&allowed, type)) ++void transport_check_allowed(const char *type) ++{ ++ if (!is_transport_allowed(type)) + die("transport '%s' not allowed", type); +- string_list_clear(&allowed, 0); ++} ++ ++int transport_restrict_protocols(void) ++{ ++ return !!protocol_whitelist(); + } + + struct transport *transport_get(struct remote *remote, const char *url) +diff --git a/transport.h b/transport.h +index 2beda7d..7707c27 100644 +--- a/transport.h ++++ b/transport.h +@@ -114,12 +114,23 @@ struct transport { + struct transport *transport_get(struct remote *, const char *); + + /* ++ * Check whether a transport is allowed by the environment. Type should ++ * generally be the URL scheme, as described in Documentation/git.txt ++ */ ++int is_transport_allowed(const char *type); ++ ++/* + * Check whether a transport is allowed by the environment, +- * and die otherwise. type should generally be the URL scheme, +- * as described in Documentation/git.txt ++ * and die otherwise. + */ + void transport_check_allowed(const char *type); + ++/* ++ * Returns true if the user has attempted to turn on protocol ++ * restrictions at all. ++ */ ++int transport_restrict_protocols(void); ++ + /* Transport options which apply to git:// and scp-style URLs */ + + /* The program to use on the remote side to send a pack */ +-- +2.1.0 + diff --git a/0004-http-limit-redirection-to-protocol-whitelist.patch b/0004-http-limit-redirection-to-protocol-whitelist.patch new file mode 100644 index 0000000..19a6b8c --- /dev/null +++ b/0004-http-limit-redirection-to-protocol-whitelist.patch @@ -0,0 +1,77 @@ +From 0f032880eddc09abd1850533422c9b0bb80a010c Mon Sep 17 00:00:00 2001 +From: Petr Stodulka +Date: Sun, 1 Nov 2015 20:23:07 +0100 +Subject: [PATCH] http-limit-redirection-to-protocol-whitelist + +Previously, libcurl would follow redirection to any protocol +it was compiled for support with. This is desirable to allow +redirection from HTTP to HTTPS. However, it would even +successfully allow redirection from HTTP to SFTP, a protocol +that git does not otherwise support at all. Furthermore +git's new protocol-whitelisting could be bypassed by +following a redirect within the remote helper, as it was +only enforced at transport selection time. + +This patch limits redirects within libcurl to HTTP, HTTPS, +FTP and FTPS. If there is a protocol-whitelist present, this +list is limited to those also allowed by the whitelist. As +redirection happens from within libcurl, it is impossible +for an HTTP redirect to a protocol implemented within +another remote helper. + +When the curl version git was compiled with is too old to +support restrictions on protocol redirection, we warn the +user if GIT_ALLOW_PROTOCOL restrictions were requested. This +is a little inaccurate, as even without that variable in the +environment, we would still restrict SFTP, etc, and we do +not warn in that case. But anything else means we would +literally warn every time git accesses an http remote. +--- + http.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/http.c b/http.c +index d9d1aad..744e5a1 100644 +--- a/http.c ++++ b/http.c +@@ -5,6 +5,7 @@ + #include "url.h" + #include "credential.h" + #include "version.h" ++#include "transport.h" + + int active_requests; + int http_is_verbose; +@@ -246,6 +247,7 @@ static int has_cert_password(void) + static CURL *get_curl_handle(void) + { + CURL *result = curl_easy_init(); ++ long allowed_protocols = 0; + + if (!curl_ssl_verify) { + curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 0); +@@ -296,6 +298,21 @@ static CURL *get_curl_handle(void) + #elif LIBCURL_VERSION_NUM >= 0x071101 + curl_easy_setopt(result, CURLOPT_POST301, 1); + #endif ++#if LIBCURL_VERSION_NUM >= 0x071304 ++ if (is_transport_allowed("http")) ++ allowed_protocols |= CURLPROTO_HTTP; ++ if (is_transport_allowed("https")) ++ allowed_protocols |= CURLPROTO_HTTPS; ++ if (is_transport_allowed("ftp")) ++ allowed_protocols |= CURLPROTO_FTP; ++ if (is_transport_allowed("ftps")) ++ allowed_protocols |= CURLPROTO_FTPS; ++ curl_easy_setopt(result, CURLOPT_REDIR_PROTOCOLS, allowed_protocols); ++#else ++ if (transport_restrict_protocols()) ++ warning("protocol restrictions not applied to curl redirects because\n" ++ "your curl version is too old (>= 7.19.4)"); ++#endif + + if (getenv("GIT_CURL_VERBOSE")) + curl_easy_setopt(result, CURLOPT_VERBOSE, 1); +-- +2.4.3 + diff --git a/0005-http-limit-redirection-depth.patch b/0005-http-limit-redirection-depth.patch new file mode 100644 index 0000000..471f4eb --- /dev/null +++ b/0005-http-limit-redirection-depth.patch @@ -0,0 +1,31 @@ +From 7f3bfdbc2670b4960242fa1b229dde6bcb2b463b Mon Sep 17 00:00:00 2001 +From: Petr Stodulka +Date: Fri, 23 Oct 2015 17:39:59 +0200 +Subject: [PATCH 5/5] http: limit redirection depth + +By default, libcurl will follow circular http redirects +forever. Let's put a cap on this so that somebody who can +trigger an automated fetch of an arbitrary repository (e.g., +for CI) cannot convince git to loop infinitely. + +The value chosen is 20, which is the same default that +Firefox uses. +--- + http.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/http.c b/http.c +index 235c2d5..a1c7dcb 100644 +--- a/http.c ++++ b/http.c +@@ -298,6 +298,7 @@ static CURL *get_curl_handle(void) + } + + curl_easy_setopt(result, CURLOPT_FOLLOWLOCATION, 1); ++ curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20); + #if LIBCURL_VERSION_NUM >= 0x071301 + curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); + #elif LIBCURL_VERSION_NUM >= 0x071101 +-- +2.1.0 + diff --git a/0007-git-prompt.patch b/0007-git-prompt.patch new file mode 100644 index 0000000..a179403 --- /dev/null +++ b/0007-git-prompt.patch @@ -0,0 +1,53 @@ +From 7e546ae76da784185ba9515ed86e435ba17fdd65 Mon Sep 17 00:00:00 2001 +From: Petr Stodulka +Date: Wed, 29 Mar 2017 13:08:28 +0200 +Subject: [PATCH] git-prompt.sh: don't put unsanitized branch names in $PS1 + +--- + contrib/completion/git-prompt.sh | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh +index eaf5c36..2c872e5 100644 +--- a/contrib/completion/git-prompt.sh ++++ b/contrib/completion/git-prompt.sh +@@ -360,8 +360,11 @@ __git_ps1 () + fi + + local f="$w$i$s$u" ++ b=${b##refs/heads/} + if [ $pcmode = yes ]; then + local gitstring= ++ __git_ps1_branch_name=$b ++ b="\${__git_ps1_branch_name}" + if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then + local c_red='\e[31m' + local c_green='\e[32m' +@@ -371,7 +374,7 @@ __git_ps1 () + local ok_color=$c_green + local branch_color="$c_clear" + local flags_color="$c_lblue" +- local branchstring="$c${b##refs/heads/}" ++ local branchstring="$c$b" + + if [ $detached = no ]; then + branch_color="$ok_color" +@@ -400,13 +403,13 @@ __git_ps1 () + fi + gitstring="$gitstring\[$c_clear\]$r$p" + else +- gitstring="$c${b##refs/heads/}${f:+ $f}$r$p" ++ gitstring="$c$b${f:+ $f}$r$p" + fi + gitstring=$(printf -- "$printf_format" "$gitstring") + PS1="$ps1pc_start$gitstring$ps1pc_end" + else + # NO color option unless in PROMPT_COMMAND mode +- printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p" ++ printf -- "$printf_format" "$c$b${f:+ $f}$r$p" + fi + fi + } +-- +2.5.5 + diff --git a/git-1.5-gitweb-home-link.patch b/git-1.5-gitweb-home-link.patch new file mode 100644 index 0000000..74c8390 --- /dev/null +++ b/git-1.5-gitweb-home-link.patch @@ -0,0 +1,12 @@ +diff -up git-1.7.2/gitweb/gitweb.perl.orig git-1.7.2/gitweb/gitweb.perl +--- git-1.7.2/gitweb/gitweb.perl.orig 2010-07-21 23:35:25.000000000 +0200 ++++ git-1.7.2/gitweb/gitweb.perl 2010-07-22 10:49:50.385707086 +0200 +@@ -79,7 +79,7 @@ our $projectroot = "++GITWEB_PROJECTROOT + our $project_maxdepth = "++GITWEB_PROJECT_MAXDEPTH++"; + + # string of the home link on top of all pages +-our $home_link_str = "++GITWEB_HOME_LINK_STR++"; ++our $home_link_str = $ENV{'SERVER_NAME'} ? "git://" . $ENV{'SERVER_NAME'} : "projects"; + + # name of your site or organization to appear in page titles + # replace this with something more descriptive for clearer bookmarks diff --git a/git-1.7-el5-emacs-support.patch b/git-1.7-el5-emacs-support.patch new file mode 100644 index 0000000..25b3c31 --- /dev/null +++ b/git-1.7-el5-emacs-support.patch @@ -0,0 +1,252 @@ +From 424058e0607b4b3c558d19633090e06e7bd2b851 Mon Sep 17 00:00:00 2001 +From: Todd Zullinger +Date: Wed, 2 Feb 2011 21:24:44 -0500 +Subject: [PATCH] Restore vc-git.el for basic compatibility on EL-5 + +This is the vc-git.el from 1.6.4.1, the last version to include it. +Most uses will be better served by the vc-git.el which is provided by +emacs >= 22.2, but on EL-5 we don't have the luxury of a modern emacs. +--- + contrib/emacs/Makefile | 2 +- + contrib/emacs/vc-git.el | 216 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 217 insertions(+), 1 deletions(-) + create mode 100644 contrib/emacs/vc-git.el + +diff --git a/contrib/emacs/Makefile b/contrib/emacs/Makefile +index 24d9312..a48540a 100644 +--- a/contrib/emacs/Makefile ++++ b/contrib/emacs/Makefile +@@ -2,7 +2,7 @@ + + EMACS = emacs + +-ELC = git.elc git-blame.elc ++ELC = git.elc vc-git.elc git-blame.elc + INSTALL ?= install + INSTALL_ELC = $(INSTALL) -m 644 + prefix ?= $(HOME) +diff --git a/contrib/emacs/vc-git.el b/contrib/emacs/vc-git.el +new file mode 100644 +index 0000000..b8f6be5 +--- /dev/null ++++ b/contrib/emacs/vc-git.el +@@ -0,0 +1,216 @@ ++;;; vc-git.el --- VC backend for the git version control system ++ ++;; Copyright (C) 2006 Alexandre Julliard ++ ++;; This program is free software; you can redistribute it and/or ++;; modify it under the terms of the GNU General Public License as ++;; published by the Free Software Foundation; either version 2 of ++;; the License, or (at your option) any later version. ++;; ++;; This program is distributed in the hope that it will be ++;; useful, but WITHOUT ANY WARRANTY; without even the implied ++;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ++;; PURPOSE. See the GNU General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public ++;; License along with this program; if not, write to the Free ++;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ++;; MA 02111-1307 USA ++ ++;;; Commentary: ++ ++;; This file contains a VC backend for the git version control ++;; system. ++;; ++;; To install: put this file on the load-path and add GIT to the list ++;; of supported backends in `vc-handled-backends'; the following line, ++;; placed in your ~/.emacs, will accomplish this: ++;; ++;; (add-to-list 'vc-handled-backends 'GIT) ++;; ++;; TODO ++;; - changelog generation ++;; - working with revisions other than HEAD ++;; ++ ++(eval-when-compile (require 'cl)) ++ ++(defvar git-commits-coding-system 'utf-8 ++ "Default coding system for git commits.") ++ ++(defun vc-git--run-command-string (file &rest args) ++ "Run a git command on FILE and return its output as string." ++ (let* ((ok t) ++ (str (with-output-to-string ++ (with-current-buffer standard-output ++ (unless (eq 0 (apply #'call-process "git" nil '(t nil) nil ++ (append args (list (file-relative-name file))))) ++ (setq ok nil)))))) ++ (and ok str))) ++ ++(defun vc-git--run-command (file &rest args) ++ "Run a git command on FILE, discarding any output." ++ (let ((name (file-relative-name file))) ++ (eq 0 (apply #'call-process "git" nil (get-buffer "*Messages") nil (append args (list name)))))) ++ ++(defun vc-git-registered (file) ++ "Check whether FILE is registered with git." ++ (with-temp-buffer ++ (let* ((dir (file-name-directory file)) ++ (name (file-relative-name file dir))) ++ (and (ignore-errors ++ (when dir (cd dir)) ++ (eq 0 (call-process "git" nil '(t nil) nil "ls-files" "-c" "-z" "--" name))) ++ (let ((str (buffer-string))) ++ (and (> (length str) (length name)) ++ (string= (substring str 0 (1+ (length name))) (concat name "\0")))))))) ++ ++(defun vc-git-state (file) ++ "git-specific version of `vc-state'." ++ (let ((diff (vc-git--run-command-string file "diff-index" "-z" "HEAD" "--"))) ++ (if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} [ADMU]\0[^\0]+\0" diff)) ++ 'edited ++ 'up-to-date))) ++ ++(defun vc-git-workfile-version (file) ++ "git-specific version of `vc-workfile-version'." ++ (let ((str (with-output-to-string ++ (with-current-buffer standard-output ++ (call-process "git" nil '(t nil) nil "symbolic-ref" "HEAD"))))) ++ (if (string-match "^\\(refs/heads/\\)?\\(.+\\)$" str) ++ (match-string 2 str) ++ str))) ++ ++(defun vc-git-symbolic-commit (commit) ++ "Translate COMMIT string into symbolic form. ++Returns nil if not possible." ++ (and commit ++ (with-temp-buffer ++ (and ++ (zerop ++ (call-process "git" nil '(t nil) nil "name-rev" ++ "--name-only" "--tags" ++ commit)) ++ (goto-char (point-min)) ++ (= (forward-line 2) 1) ++ (bolp) ++ (buffer-substring-no-properties (point-min) (1- (point-max))))))) ++ ++(defun vc-git-previous-version (file rev) ++ "git-specific version of `vc-previous-version'." ++ (let ((default-directory (file-name-directory (expand-file-name file))) ++ (file (file-name-nondirectory file))) ++ (vc-git-symbolic-commit ++ (with-temp-buffer ++ (and ++ (zerop ++ (call-process "git" nil '(t nil) nil "rev-list" ++ "-2" rev "--" file)) ++ (goto-char (point-max)) ++ (bolp) ++ (zerop (forward-line -1)) ++ (not (bobp)) ++ (buffer-substring-no-properties ++ (point) ++ (1- (point-max)))))))) ++ ++(defun vc-git-next-version (file rev) ++ "git-specific version of `vc-next-version'." ++ (let* ((default-directory (file-name-directory ++ (expand-file-name file))) ++ (file (file-name-nondirectory file)) ++ (current-rev ++ (with-temp-buffer ++ (and ++ (zerop ++ (call-process "git" nil '(t nil) nil "rev-list" ++ "-1" rev "--" file)) ++ (goto-char (point-max)) ++ (bolp) ++ (zerop (forward-line -1)) ++ (bobp) ++ (buffer-substring-no-properties ++ (point) ++ (1- (point-max))))))) ++ (and current-rev ++ (vc-git-symbolic-commit ++ (with-temp-buffer ++ (and ++ (zerop ++ (call-process "git" nil '(t nil) nil "rev-list" ++ "HEAD" "--" file)) ++ (goto-char (point-min)) ++ (search-forward current-rev nil t) ++ (zerop (forward-line -1)) ++ (buffer-substring-no-properties ++ (point) ++ (progn (forward-line 1) (1- (point)))))))))) ++ ++(defun vc-git-revert (file &optional contents-done) ++ "Revert FILE to the version stored in the git repository." ++ (if contents-done ++ (vc-git--run-command file "update-index" "--") ++ (vc-git--run-command file "checkout" "HEAD"))) ++ ++(defun vc-git-checkout-model (file) ++ 'implicit) ++ ++(defun vc-git-workfile-unchanged-p (file) ++ (let ((sha1 (vc-git--run-command-string file "hash-object" "--")) ++ (head (vc-git--run-command-string file "ls-tree" "-z" "HEAD" "--"))) ++ (and head ++ (string-match "[0-7]\\{6\\} blob \\([0-9a-f]\\{40\\}\\)\t[^\0]+\0" head) ++ (string= (car (split-string sha1 "\n")) (match-string 1 head))))) ++ ++(defun vc-git-register (file &optional rev comment) ++ "Register FILE into the git version-control system." ++ (vc-git--run-command file "update-index" "--add" "--")) ++ ++(defun vc-git-print-log (file &optional buffer) ++ (let ((name (file-relative-name file)) ++ (coding-system-for-read git-commits-coding-system)) ++ (vc-do-command buffer 'async "git" name "rev-list" "--pretty" "HEAD" "--"))) ++ ++(defun vc-git-diff (file &optional rev1 rev2 buffer) ++ (let ((name (file-relative-name file)) ++ (buf (or buffer "*vc-diff*"))) ++ (if (and rev1 rev2) ++ (vc-do-command buf 0 "git" name "diff-tree" "-p" rev1 rev2 "--") ++ (vc-do-command buf 0 "git" name "diff-index" "-p" (or rev1 "HEAD") "--")) ++ ; git-diff-index doesn't set exit status like diff does ++ (if (vc-git-workfile-unchanged-p file) 0 1))) ++ ++(defun vc-git-checkin (file rev comment) ++ (let ((coding-system-for-write git-commits-coding-system)) ++ (vc-git--run-command file "commit" "-m" comment "--only" "--"))) ++ ++(defun vc-git-checkout (file &optional editable rev destfile) ++ (if destfile ++ (let ((fullname (substring ++ (vc-git--run-command-string file "ls-files" "-z" "--full-name" "--") ++ 0 -1)) ++ (coding-system-for-read 'no-conversion) ++ (coding-system-for-write 'no-conversion)) ++ (with-temp-file destfile ++ (eq 0 (call-process "git" nil t nil "cat-file" "blob" ++ (concat (or rev "HEAD") ":" fullname))))) ++ (vc-git--run-command file "checkout" (or rev "HEAD")))) ++ ++(defun vc-git-annotate-command (file buf &optional rev) ++ ; FIXME: rev is ignored ++ (let ((name (file-relative-name file))) ++ (call-process "git" nil buf nil "blame" name))) ++ ++(defun vc-git-annotate-time () ++ (and (re-search-forward "[0-9a-f]+ (.* \\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) \\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) \\([-+0-9]+\\) +[0-9]+)" nil t) ++ (vc-annotate-convert-time ++ (apply #'encode-time (mapcar (lambda (match) (string-to-number (match-string match))) '(6 5 4 3 2 1 7)))))) ++ ++;; Not really useful since we can't do anything with the revision yet ++;;(defun vc-annotate-extract-revision-at-line () ++;; (save-excursion ++;; (move-beginning-of-line 1) ++;; (and (looking-at "[0-9a-f]+") ++;; (buffer-substring (match-beginning 0) (match-end 0))))) ++ ++(provide 'vc-git) +-- +1.7.3.4 + diff --git a/git-2.52-sanitize-sideband-channel-messages.patch b/git-2.52-sanitize-sideband-channel-messages.patch deleted file mode 100644 index 786cb39..0000000 --- a/git-2.52-sanitize-sideband-channel-messages.patch +++ /dev/null @@ -1,275 +0,0 @@ -From 65e88e659008e2cbf79cf44975406ff0d569a3a9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ond=C5=99ej=20Poho=C5=99elsk=C3=BD?= -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 `^` -(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 - -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 - -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 - -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ý ---- - 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 [ [ [; ]*] 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 "error: 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 decoded && -+ test_grep RED decoded && -+ test_grep "\\^G" stderr && -+ tr -dc "\\007" 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 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 decoded && -+ test_grep RED decoded && -+ tr -dc "\\007" actual && -+ test_file_not_empty actual -+' -+ - test_done --- -2.51.1 - diff --git a/git-init.el b/git-init.el new file mode 100644 index 0000000..d2a96a7 --- /dev/null +++ b/git-init.el @@ -0,0 +1,5 @@ +;; Git VC backend +(add-to-list 'vc-handled-backends 'GIT t) +(autoload 'git-status "git" "GIT mode." t) +(autoload 'git-blame-mode "git-blame" + "Minor mode for incremental blame for Git." t) diff --git a/git-test-apache-davlockdbtype-config.patch b/git-test-apache-davlockdbtype-config.patch deleted file mode 100644 index 882006a..0000000 --- a/git-test-apache-davlockdbtype-config.patch +++ /dev/null @@ -1,14 +0,0 @@ -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 @@ - - LoadModule dav_module modules/mod_dav.so - LoadModule dav_fs_module modules/mod_dav_fs.so -- -+ -+ DavLockDBType sdbm -+ - DAVLockDB DAVLock - - Dav on diff --git a/gitweb-httpd.conf b/git.conf.httpd similarity index 100% rename from gitweb-httpd.conf rename to git.conf.httpd diff --git a/git.rpmlintrc b/git.rpmlintrc deleted file mode 100644 index 8b09c35..0000000 --- a/git.rpmlintrc +++ /dev/null @@ -1,42 +0,0 @@ -# the dictionary is a bit limited -addFilter("git.* spelling-error %description .* subpackages") -addFilter("git-subtree.* spelling-error %description .* (subdirectory|subproject|subtree)") - -# 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") - -# 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 -addFilter("git-gui.noarch: W: desktopfile-without-binary /usr/share/applications/git-gui.desktop git") - -# ignore no binary warning for main git package; making it noarch isn't trivial -# since we have arch-specific subpackages -addFilter("git\..*: E: no-binary$") - -# ignore no doc/manpage warnings where we don't expect any documentation -addFilter("git-(all|core|credential-libsecret)\..*: W: no-documentation") -addFilter("perl-Git-SVN.noarch: W: no-documentation") -addFilter("git-core\..*: W: no-manual-page-for-binary") - -# nothing provides git-gnome-keyring, it's simply obsolete -# similarly ignore the warning when git-cvs and git-p4 are disabled -addFilter("git.* obsolete-not-provided git-(cvs|gnome-keyring|p4)") - -# git-svn has both man and html docs and only a single command -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') diff --git a/git.skip-test-patterns b/git.skip-test-patterns deleted file mode 100644 index a310f5a..0000000 --- a/git.skip-test-patterns +++ /dev/null @@ -1,33 +0,0 @@ -^ok 1 # SKIP enable client-side http/2 \(missing HTTP2\)$ -expensive 2GB clone test; enable with GIT_TEST_CLONE_2GB=true -filesystem does not corrupt utf-8 -fsmonitor--daemon is not supported on this platform -GIT_SKIP_TESTS -missing AUTOIDENT -missing BUILTIN_TXT_ -missing CASE_INSENSITIVE_FS -missing DONTHAVEIT -missing ([!]LONG_IS_64BIT,)?EXPENSIVE -missing FSMONITOR_DAEMON -missing JGIT -missing !?LAZY_(TRUE|FALSE) -missing MINGW -missing NATIVE_CRLF -missing !PCRE -missing !PTHREADS -missing !REFFILES -missing RFC1991 -missing RUNTIME_PREFIX -missing SYMLINKS_WINDOWS -missing TAR_NEEDS_PAX_FALLBACK -missing UTF8_NFD_TO_NFC -missing WINDOWS -skipped: skip all tests in t5559 -skipping case insensitive tests -skipping git p4 tests -skipping remote-svn tests, python not available -skipping svn-info test -skipping Windows-(only path|specific) tests -Test requiring writable / skipped -used to test external credential helpers -You must set env var GIT_TEST_ALLOW_SUDO=YES in order to run this test diff --git a/git.socket b/git.socket deleted file mode 100644 index 3dec01d..0000000 --- a/git.socket +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Git Activation Socket - -[Socket] -ListenStream=9418 -Accept=true - -[Install] -WantedBy=sockets.target diff --git a/git.spec b/git.spec index 49c55d0..5cd6728 100644 --- a/git.spec +++ b/git.spec @@ -1,347 +1,139 @@ # 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 -%if 0%{?fedora} -# linkchecker is not available on EL -%bcond_without linkcheck +# Settings for EL-5 +# - Leave git-* binaries in %{_bindir} +# - Don't use noarch subpackages +# - Use proper libcurl devel package +# - Patch emacs and tweak docbook spaces +# - Explicitly enable ipv6 for git-daemon +# - Use prebuilt documentation, asciidoc is too old +# - Define missing python macro +%if 0%{?rhel} && 0%{?rhel} <= 5 +%global gitcoredir %{_bindir} +%global noarch_sub 0 +%global libcurl_devel curl-devel +%global emacs_old 1 +%global docbook_suppress_sp 1 +%global enable_ipv6 1 +%global use_prebuilt_docs 1 +%global filter_yaml_any 1 +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %else -%bcond_with linkcheck +%global gitcoredir %{_libexecdir}/git-core +%global noarch_sub 1 +%global libcurl_devel libcurl-devel +%global emacs_old 0 +%global docbook_suppress_sp 0 +%global enable_ipv6 0 +%global use_prebuilt_docs 0 +%global filter_yaml_any 0 %endif -# Settings for Fedora >= 38 and EL >= 10 -%if 0%{?fedora} >= 38 || 0%{?rhel} >= 10 -%bcond_with perl_modcompat +# Build gnome-keyring git-credential helper on Fedora and RHEL >= 7 +%if 0%{?fedora} || 0%{?rhel} >= 7 +%global gnome_keyring 1 %else -%bcond_without perl_modcompat +%global gnome_keyring 0 %endif -# Settings for Fedora and EL == 9 -# In EL >= 10 docbook5-style-xsl, needed by asciidoctor, is unwanted package -%if 0%{?fedora} || 0%{?rhel} == 9 -%bcond_without asciidoctor +%if (0%{?fedora} && 0%{?fedora} < 19) || (0%{?rhel} && 0%{?rhel} < 7) +%global with_desktop_vendor_tag 1 %else -%bcond_with asciidoctor +%global with_desktop_vendor_tag 0 %endif -# Settings for Fedora and EL >= 8 -%if 0%{?fedora} || 0%{?rhel} >= 8 -%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 build_cflags %{build_cflags} -fPIC -std=gnu99 -%global gitweb_httpd_conf git.conf -%global use_glibc_langpacks 0 -%global use_perl_generators 0 -%global use_perl_interpreter 0 -%endif - -# Allow cvs subpackage to be toggled via --with/--without -# Disable cvs subpackage by default on EL >= 8 -%if 0%{?rhel} >= 8 -%bcond_with cvs -%else -%bcond_without cvs -%endif - -# Allow credential-libsecret subpackage to be toggled via --with/--without -%bcond_without libsecret - -# Allow p4 subpackage to be toggled via --with/--without -# Disable p4 package by default on EL >= 10 -%if 0%{?rhel} >= 10 -%bcond_with p4 -%else -%bcond_without p4 -%endif - -# Hardening flags for EL-7 -%if 0%{?rhel} == 7 -%global _hardened_build 1 -%endif - -# Define %%bash_completions_dir for EL <= 9 -%{?!bash_completions_dir:%global bash_completions_dir %{_datadir}/bash-completion/completions} - -# Set path to the package-notes linker script -%global _package_note_file %{_builddir}/%{name}-%{real_version}/.package_note-%{name}-%{version}-%{release}.%{_arch}.ld - Name: git -Version: 2.52.0 -Release: 1%{?dist} +Version: 1.8.2.3 +Release: 2%{?dist} Summary: Fast Version Control System -License: BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT -URL: https://git-scm.com/ - -# Note: real_version must be defined _after_ Version -%global real_version %(echo %{version} | tr '~' '.') - -# Adjust Source URL path for release candidates -%global rcpath %(test "%{version}" = "%{real_version}" || echo testing/) - -Source0: https://www.kernel.org/pub/software/scm/git/%{rcpath}%{name}-%{real_version}.tar.xz -Source1: https://www.kernel.org/pub/software/scm/git/%{rcpath}%{name}-%{real_version}.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 - +License: GPLv2 +Group: Development/Tools +URL: http://git-scm.com/ +Source0: https://www.kernel.org/pub/software/scm/git/%{name}-%{version}.tar.xz +Source2: git-init.el +Source3: git.xinetd.in +Source4: git.conf.httpd +Source5: git-gui.desktop +Source6: gitweb.conf.in +Source10: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/git-core/%{name}-manpages-%{version}.tar.gz +Source11: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/git-core/%{name}-htmldocs-%{version}.tar.gz +Patch0: git-1.5-gitweb-home-link.patch # https://bugzilla.redhat.com/490602 -Patch0: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch +Patch1: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch +# https://bugzilla.redhat.com/600411 +Patch3: git-1.7-el5-emacs-support.patch +Patch5: 0001-git-subtree-Use-gitexecdir-instead-of-libexecdir.patch +# This fixes the build when python is enabled. Needs discussion upstream to +# find a proper solution. +Patch6: 0001-Drop-DESTDIR-from-python-instlibdir.patch +Patch7: 0001-submodule-allow-only-certain-protocols-for-submodule.patch +Patch8: 0002-transport-add-a-protocol-whitelist-environment-varia.patch +Patch9: 0003-transport-refactor-protocol-whitelist-code.patch +Patch10: 0004-http-limit-redirection-to-protocol-whitelist.patch +Patch11: 0005-http-limit-redirection-depth.patch +# CVE-2016-2315 / CVE-2016-2324 +Patch12: 0001-Fix-CVE-2016-2315-CVE-2016-2324.patch +# CVE-2014-9938 +Patch13: 0007-git-prompt.patch -# https://bugzilla.redhat.com/2114531 -# tests: try harder to find open ports for apache, git, and svn -# -# https://github.com/tmzullinger/git/commit/aedeaaf788 -Patch1: 0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch -# https://github.com/tmzullinger/git/commit/16750d024c -Patch2: 0002-t-lib-git-daemon-try-harder-to-find-a-port.patch -# https://github.com/tmzullinger/git/commit/aa5105dc11 -Patch3: 0003-t-lib-git-svn-try-harder-to-find-a-port.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -# Configurates Apache test server to use `DavLockDBType sdbm` -# Prevents t5540 failures on i686, s390x and ppc64le -Patch5: git-test-apache-davlockdbtype-config.patch - -# 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. -# -# https://github.com/gitgitgadget/git/pull/1853 -Patch6: git-2.52-sanitize-sideband-channel-messages.patch - -%if %{with docs} -# pod2man is needed to build Git.3pm -BuildRequires: perl-podlators -%if %{with asciidoctor} -BuildRequires: docbook5-style-xsl -BuildRequires: rubygem-asciidoctor -%else +%if ! %{use_prebuilt_docs} && ! 0%{?_without_docs} 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: coreutils BuildRequires: desktop-file-utils -BuildRequires: diffutils -%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: emacs BuildRequires: expat-devel -BuildRequires: findutils -BuildRequires: gawk -BuildRequires: gcc BuildRequires: gettext -BuildRequires: glibc-utils -BuildRequires: gnupg2 -BuildRequires: libcurl-devel -BuildRequires: make +BuildRequires: %{libcurl_devel} +%if %{gnome_keyring} +BuildRequires: libgnome-keyring-devel +%endif +BuildRequires: pcre-devel BuildRequires: openssl-devel -BuildRequires: pcre2-devel -BuildRequires: perl(Error) -BuildRequires: perl(lib) -%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 -BuildRequires: pkgconfig(bash-completion) -BuildRequires: sed -%if 0%{?fedora} || 0%{?rhel} >= 8 -BuildRequires: systemd-rpm-macros -%else -BuildRequires: systemd -%endif -BuildRequires: tcl -BuildRequires: tk -BuildRequires: xz BuildRequires: zlib-devel >= 1.2 -%if %{with tests} -# Test suite requirements -BuildRequires: acl -%if (0%{?fedora} && 0%{?fedora} < 40) || (0%{?rhel} >= 8 && 0%{?rhel} < 10) -# Needed by t5540-http-push-webdav.sh; recent httpd obviates this -BuildRequires: apr-util-bdb -%endif -%if 0%{?fedora} || 0%{?rhel} >= 8 -# Needed by t5559-http-fetch-smart-http2.sh -BuildRequires: mod_http2 -%endif -# endif fedora or rhel >= 8 -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%{?rhel} >= 9 -BuildRequires: gnupg2-smime -%endif -# endif fedora or el >= 9 -%if 0%{?fedora} || 0%{?rhel} >= 8 || ( 0%{?rhel} == 7 && ( "%{_arch}" == "ppc64le" || "%{_arch}" == "x86_64" ) ) -BuildRequires: highlight -%endif -# endif fedora or el7+ (ppc64le/x86_64) -%if 0%{?fedora} >= 37 -BuildRequires: httpd-core -%else -BuildRequires: httpd -%endif -# endif fedora >= 37 -%if 0%{?fedora} && ! ( 0%{?fedora} >= 35 || "%{_arch}" == "i386" || "%{_arch}" == "s390x" ) -BuildRequires: jgit -%endif -# endif fedora (except i386 and s390x) -BuildRequires: mod_dav_svn -BuildRequires: openssh-clients -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 python3} -BuildRequires: python3-devel -%else -%if %{with python2} -BuildRequires: python2-devel -%endif -# endif with python2 -%endif -# endif with python3 -BuildRequires: subversion -BuildRequires: subversion-perl -BuildRequires: tar -BuildRequires: time -BuildRequires: zip -BuildRequires: zstd -%endif -# endif with tests - -Requires: git-core = %{version}-%{release} -Requires: git-core-doc = %{version}-%{release} -%if ! %{defined perl_bootstrap} +Requires: less +Requires: openssh-clients +Requires: perl(Error) Requires: perl(Term::ReadKey) -%endif -# endif ! defined perl_bootstrap Requires: perl-Git = %{version}-%{release} +Requires: rsync +Requires: zlib >= 1.2 -# Obsolete git-cvs if it's disabled -%if %{without cvs} -Obsoletes: git-cvs < %{?epoch:%{epoch}:}%{version}-%{release} -%endif -# endif without cvs +Provides: git-core = %{version}-%{release} +Obsoletes: git-core <= 1.5.4.3 -# Obsolete git-p4 if it's disabled -%if %{without p4} -Obsoletes: git-p4 < %{?epoch:%{epoch}:}%{version}-%{release} -%endif -# endif without p4 +# Obsolete git-arch +Obsoletes: git-arch < %{version}-%{release} %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. +The git rpm installs the core tools with minimal 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 +Group: Development/Tools +%if %{noarch_sub} BuildArch: noarch +%endif 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: git-p4 = %{version}-%{release} Requires: gitk = %{version}-%{release} Requires: perl-Git = %{version}-%{release} -%if ! %{defined perl_bootstrap} -Requires: perl(Term::ReadKey) -%endif -# endif ! defined perl_bootstrap +Requires: emacs-git = %{version}-%{release} +Obsoletes: git <= 1.5.4.3 + %description all Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations @@ -349,406 +141,330 @@ 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} -%{?systemd_requires} +Summary: Git protocol dæmon +Group: Development/Tools +Requires: git = %{version}-%{release}, xinetd %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(Cwd) -%if ! 0%{?rhel} -# RHEL lacks perl-Email-Valid (rhbz#2166718) -Requires: perl(Email::Valid) -%endif -Requires: perl(File::Spec) -Requires: perl(File::Spec::Functions) -Requires: perl(File::Temp) -Requires: perl(IO::Socket::SSL) -Requires: perl(Mail::Address) -Requires: perl(MIME::Base64) -Requires: perl(MIME::QuotedPrint) -Requires: perl(Net::Domain) -Requires: perl(Net::SMTP) -Requires: perl(Net::SMTP::SSL) -Requires: perl(POSIX) -Requires: perl(Sys::Hostname) -Requires: perl(Term::ANSIColor) -Requires: perl(Term::ReadLine) -Requires: perl(Text::ParseWords) -%description email -%{summary}. - -%package -n gitk -Summary: Git repository browser -BuildArch: noarch -Requires: git = %{version}-%{release} -Requires: git-gui = %{version}-%{release} -Requires: tk -%description -n gitk -%{summary}. +The git dæmon for supporting git:// access to git repositories %package -n gitweb Summary: Simple web interface to git repositories +Group: Development/Tools +%if %{noarch_sub} 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 +Requires: git = %{version}-%{release} -%description instaweb -A simple script to set up gitweb and a web server for browsing the local -repository. +%description -n gitweb +Simple web interface to track changes in git repositories -%if %{with p4} %package p4 Summary: Git tools for working with Perforce depots +Group: Development/Tools +%if %{noarch_sub} BuildArch: noarch -%if %{with python3} -BuildRequires: python3-devel -%else -%if %{with python2} -BuildRequires: python2-devel %endif -# endif with python2 -%endif -# endif with python3 +BuildRequires: python Requires: git = %{version}-%{release} %description p4 %{summary}. + +%package svn +Summary: Git tools for importing Subversion repositories +Group: Development/Tools +Requires: git = %{version}-%{release}, subversion, perl(Term::ReadKey) +%description svn +Git tools for importing Subversion repositories. + +%package cvs +Summary: Git tools for importing CVS repositories +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch %endif -# endif with p4 +Requires: git = %{version}-%{release}, cvs +Requires: cvsps +Requires: perl-DBD-SQLite +%description cvs +Git tools for importing CVS repositories. + +%package email +Summary: Git tools for sending email +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release}, perl-Git = %{version}-%{release} +Requires: perl(Authen::SASL) +Requires: perl(Net::SMTP::SSL) +%description email +Git tools for sending email. + +%package gui +Summary: Git GUI tool +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release}, tk >= 8.4 +Requires: gitk = %{version}-%{release} +%description gui +Git GUI tool. + +%package -n gitk +Summary: Git revision tree visualiser +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release}, tk >= 8.4 +%description -n gitk +Git revision tree visualiser. %package -n perl-Git Summary: Perl interface to Git +Group: Development/Libraries +%if %{noarch_sub} BuildArch: noarch -Requires: git = %{version}-%{release} -%if %{with perl_modcompat} -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) %endif +Requires: git = %{version}-%{release} +BuildRequires: perl(Error), perl(ExtUtils::MakeMaker) +Requires: perl(Error) +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + %description -n perl-Git -%{summary}. +Perl interface to Git. %package -n perl-Git-SVN Summary: Perl interface to Git::SVN +Group: Development/Libraries +%if %{noarch_sub} BuildArch: noarch -Requires: git = %{version}-%{release} -%if %{with perl_modcompat} -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) %endif +Requires: git = %{version}-%{release} +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + %description -n perl-Git-SVN +Perl interface to Git. + +%package -n emacs-git +Summary: Git version control system support for Emacs +Group: Applications/Editors +Requires: git = %{version}-%{release} +%if %{noarch_sub} +BuildArch: noarch +Requires: emacs(bin) >= %{_emacs_version} +%else +Requires: emacs-common +%endif + +%description -n emacs-git %{summary}. -%package subtree -Summary: Git tools to merge and split repositories +%package -n emacs-git-el +Summary: Elisp source files for git version control system support for Emacs +Group: Applications/Editors +%if %{noarch_sub} BuildArch: noarch -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 +Requires: emacs-git = %{version}-%{release} + +%description -n emacs-git-el %{summary}. %prep -# Verify GPG signatures -xz -dc '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=- - -%autosetup -p1 -n %{name}-%{real_version} - -# Install print-failed-test-output script -install -p -m 755 %{SOURCE99} print-failed-test-output - -# Remove git-archimport -sed -i '/^SCRIPT_PERL += git-archimport\.perl$/d' Makefile -sed -i '/^git-archimport/d' command-list.txt -rm git-archimport.perl Documentation/git-archimport.adoc - -%if %{without cvs} -# Remove git-cvs* from command list -sed -i '/^git-cvs/d' command-list.txt +%setup -q +%patch0 -p1 +%patch1 -p1 +%if %{emacs_old} +%patch3 -p1 %endif -# endif without cvs +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 -%if %{without p4} -# Remove git-p4 from command list -sed -i '/^git-p4/d' command-list.txt +%if %{use_prebuilt_docs} +mkdir -p prebuilt_docs/{html,man} +tar xf %{SOURCE10} -C prebuilt_docs/man +tar xf %{SOURCE11} -C prebuilt_docs/html +# Remove non-html files +find prebuilt_docs/html -type f ! -name '*.html' | xargs rm +find prebuilt_docs/html -type d | xargs rmdir --ignore-fail-on-non-empty %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 +cat << \EOF > config.mak V = 1 -CFLAGS = %{build_cflags} -LDFLAGS = %{build_ldflags} +CFLAGS = %{optflags} +BLK_SHA1 = 1 +NEEDS_CRYPTO_WITH_SSL = 1 USE_LIBPCRE = 1 ETC_GITCONFIG = %{_sysconfdir}/gitconfig -INSTALL_SYMLINKS = 1 -GITWEB_PROJECTROOT = %{_localstatedir}/lib/git +DESTDIR = %{buildroot} +INSTALL = install -p +GITWEB_PROJECTROOT = %{_var}/lib/git GNU_ROFF = 1 -NO_PERL_CPAN_FALLBACKS = 1 -%if 0%{?rhel} && 0%{?rhel} < 8 -NO_UNCOMPRESS2 = 1 -%endif -%if %{with python3} -PYTHON_PATH = %{__python3} -%else -%if %{with python2} -PYTHON_PATH = %{__python2} -%else -NO_PYTHON = 1 -%endif -%endif -%if %{with asciidoctor} -USE_ASCIIDOCTOR = 1 -%endif -htmldir = %{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}} +htmldir = %{_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 +gitwebdir = %{_var}/www/git EOF +%if "%{gitcoredir}" == "%{_bindir}" +echo gitexecdir = %{_bindir} >> config.mak +%endif + +%if %{docbook_suppress_sp} +# This is needed for 1.69.1-1.71.0 +echo DOCBOOK_SUPPRESS_SP = 1 >> config.mak +%endif + # Filter bogus perl requires # packed-refs comes from a comment in contrib/hooks/update-paranoid -%{?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\\) +# YAML::Any is optional and not available on el5 +cat << \EOF > %{name}-req +#!/bin/sh +%{__perl_requires} $* |\ +sed \ +%if %{filter_yaml_any} + -e '/perl(YAML::Any)/d' \ %endif -# endif ! defined perl_bootstrap + -e '/perl(packed-refs)/d' +EOF -# Exclude sample hook files from automatic dependency detection -%global __requires_exclude_from ^%{_datadir}/git-core/templates/hooks/.*sample$ - -# 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-*.adoc Documentation/ +%global __perl_requires %{_builddir}/%{name}-%{version}/%{name}-req +chmod +x %{__perl_requires} %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/ +make %{?_smp_mflags} all +%if ! %{use_prebuilt_docs} && ! 0%{?_without_docs} +make %{?_smp_mflags} doc %endif -# endif with libsecret -%make_build -C contrib/credential/netrc/ +make -C contrib/emacs -%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 -%else -# Remove contrib/fast-import/import-zips.py which requires python2. -rm -rf contrib/fast-import/import-zips.py +%if %{gnome_keyring} +make -C contrib/credential/gnome-keyring/ %endif -# endif with python2 + +make -C contrib/subtree/ + +# Remove shebang from bash-completion script +sed -i '/^#!bash/,+1 d' contrib/completion/git-completion.bash %install -%make_install %{?with_docs:install-doc} - -%make_install -C contrib/contacts - -%if %{with libsecret} -install -pm 755 contrib/credential/libsecret/git-credential-libsecret \ - %{buildroot}%{gitexecdir} +rm -rf %{buildroot} +make %{?_smp_mflags} INSTALLDIRS=vendor install +%if ! %{use_prebuilt_docs} && ! 0%{?_without_docs} +make %{?_smp_mflags} INSTALLDIRS=vendor install-doc +%else +cp -a prebuilt_docs/man/* %{buildroot}%{_mandir} +cp -a prebuilt_docs/html/* Documentation/ %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 +%if %{emacs_old} +%global _emacs_sitelispdir %{_datadir}/emacs/site-lisp +%global _emacs_sitestartdir %{_emacs_sitelispdir}/site-start.d +%endif +%global elispdir %{_emacs_sitelispdir}/git +make -C contrib/emacs install \ + emacsdir=%{buildroot}%{elispdir} +for elc in %{buildroot}%{elispdir}/*.elc ; do + install -pm 644 contrib/emacs/$(basename $elc .elc).el \ + %{buildroot}%{elispdir} +done +install -Dpm 644 %{SOURCE2} \ + %{buildroot}%{_emacs_sitestartdir}/git-init.el + +%if %{gnome_keyring} +install -pm 755 contrib/credential/gnome-keyring/git-credential-gnome-keyring \ + %{buildroot}%{gitcoredir} +# Remove built binary files, otherwise they will be installed in doc +make -C contrib/credential/gnome-keyring/ clean +%endif + +make -C contrib/subtree install +%if ! %{use_prebuilt_docs} +make -C contrib/subtree install-doc +%endif 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 -pm 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/httpd/conf.d/git.conf +sed "s|@PROJECTROOT@|%{_var}/lib/git|g" \ + %{SOURCE6} > %{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} +find %{buildroot} -type f -name .packlist -exec rm -f {} ';' +find %{buildroot} -type f -name '*.bs' -empty -exec rm -f {} ';' +find %{buildroot} -type f -name perllocal.pod -exec rm -f {} ';' -# Remove contrib/persistent-https; a) this code requires compilation; and b) it -# is licensed differently than git -rm -rf contrib/persistent-https +# Remove remote-helper python libraries and scripts, these are not ready for +# use yet +rm -rf %{buildroot}%{python_sitelib} %{buildroot}%{gitcoredir}/git-remote-testgit -# Remove contrib/scalar to avoid cruft in the git-core-doc docdir -rm -rf contrib/scalar +# git-archimport is not supported +find %{buildroot} Documentation -type f -name 'git-archimport*' -exec rm -f {} ';' -# Clean up contrib/subtree to avoid cruft in the git-core-doc docdir -rm -rf contrib/subtree/{INSTALL,Makefile,git-subtree*,t} - -%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="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}{%{_bindir},%{_libexecdir}} -type f | grep -vE "archimport|p4|svn|cvs|email|gitk|git-gui|git-citool|git-daemon" | sed -e s@^%{buildroot}@@) > bin-man-doc-files +(find %{buildroot}{%{_bindir},%{_libexecdir}} -mindepth 1 -type d | grep -vE "archimport|p4|svn|cvs|email|gitk|git-gui|git-citool|git-daemon" | 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 +%if %{!?_without_docs:1}0 +(find %{buildroot}%{_mandir} -type f | grep -vE "archimport|p4|svn|git-cvs|email|gitk|git-gui|git-citool|git-daemon|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 -install -Dp -m 0644 %{SOURCE16} %{buildroot}%{_unitdir}/git.socket +mkdir -p %{buildroot}%{_var}/lib/git +mkdir -p %{buildroot}%{_sysconfdir}/xinetd.d +# On EL <= 5, xinetd does not enable IPv6 by default +enable_ipv6=" # xinetd does not enable IPv6 by default + flags = IPv6" perl -p \ - -e "s|\@GITEXECDIR\@|%{gitexecdir}|g;" \ - -e "s|\@BASE_PATH\@|%{_localstatedir}/lib/git|g;" \ - %{SOURCE15} > %{buildroot}%{_unitdir}/git@.service + -e "s|\@GITCOREDIR\@|%{gitcoredir}|g;" \ + -e "s|\@BASE_PATH\@|%{_var}/lib/git|g;" \ +%if %{enable_ipv6} + -e "s|^}|$enable_ipv6\n$&|;" \ +%endif + %{SOURCE3} > %{buildroot}%{_sysconfdir}/xinetd.d/git # Setup bash completion -install -Dpm 644 contrib/completion/git-completion.bash %{buildroot}%{bash_completions_dir}/git -ln -s git %{buildroot}%{bash_completions_dir}/gitk +mkdir -p %{buildroot}%{_sysconfdir}/bash_completion.d +install -pm 644 contrib/completion/git-completion.bash %{buildroot}%{_sysconfdir}/bash_completion.d/git # 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/ +# Move contrib/hooks out of %%docdir and make them executable +mkdir -p %{buildroot}%{_datadir}/git-core/contrib +mv contrib/hooks %{buildroot}%{_datadir}/git-core/contrib +chmod +x %{buildroot}%{_datadir}/git-core/contrib/hooks/* +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 +desktop-file-install \ +%if %{with desktop_vendor_tag} + --vendor fedora \ +%endif + --dir=%{buildroot}%{_datadir}/applications %{SOURCE5} # find translations %find_lang %{name} %{name}.lang @@ -756,664 +472,840 @@ 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 +find %{buildroot} -name git-mergetool--lib | xargs chmod a-x +rm -f {Documentation/technical,contrib/emacs,contrib/credential/gnome-keyring}/.gitignore chmod a-x Documentation/technical/api-index.sh -find contrib -type f -print0 | xargs -r0 chmod -x +find contrib -type f | xargs 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/*.adoc 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 +%clean +rm -rf %{buildroot} -%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 +%files -f bin-man-doc-files +%defattr(-,root,root) +%{_datadir}/git-core/ +%doc README COPYING Documentation/*.txt Documentation/RelNotes contrib/ +%{!?_without_docs: %doc Documentation/*.html Documentation/docbook-xsl.css} +%{!?_without_docs: %doc Documentation/howto Documentation/technical} +%{_sysconfdir}/bash_completion.d -%check -%if %{without tests} -echo "*** Skipping tests" -exit 0 -%endif -# endif without tests +%files p4 +%defattr(-,root,root) +%{gitcoredir}/*p4* +%{gitcoredir}/mergetools/p4merge +%doc Documentation/*p4*.txt +%{!?_without_docs: %{_mandir}/man1/*p4*.1*} +%{!?_without_docs: %doc Documentation/*p4*.html } -%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 +%files svn +%defattr(-,root,root) +%{gitcoredir}/*svn* +%doc Documentation/*svn*.txt +%{!?_without_docs: %{_mandir}/man1/*svn*.1*} +%{!?_without_docs: %doc Documentation/*svn*.html } -# Tests to skip on all releases and architectures -# -# t5559-http-fetch-smart-http2 runs t5551-http-fetch-smart with -# HTTP_PROTO=HTTP/2. Unfortunately, it fails quite regularly. -# https://lore.kernel.org/git/Y4fUntdlc1mqwad5@pobox.com/ -GIT_SKIP_TESTS="t5559" +%files cvs +%defattr(-,root,root) +%doc Documentation/*git-cvs*.txt +%{_bindir}/git-cvsserver +%{gitcoredir}/*cvs* +%{!?_without_docs: %{_mandir}/man1/*cvs*.1*} +%{!?_without_docs: %doc Documentation/*git-cvs*.html } -%if 0%{?rhel} && 0%{?rhel} < 8 -# Skip tests which require mod_http2 on el7 -GIT_SKIP_TESTS="$GIT_SKIP_TESTS t5559" -%endif -# endif rhel < 8 +%files email +%defattr(-,root,root) +%doc Documentation/*email*.txt +%{gitcoredir}/*email* +%{!?_without_docs: %{_mandir}/man1/*email*.1*} +%{!?_without_docs: %doc Documentation/*email*.html } -%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.36 '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.37 t5551.25" -%endif -# endif aarch64 %%{arm} %%{power64} +%files gui +%defattr(-,root,root) +%{gitcoredir}/git-gui* +%{gitcoredir}/git-citool +%{_datadir}/applications/*git-gui.desktop +%{_datadir}/git-gui/ +%{!?_without_docs: %{_mandir}/man1/git-gui.1*} +%{!?_without_docs: %doc Documentation/git-gui.html} +%{!?_without_docs: %{_mandir}/man1/git-citool.1*} +%{!?_without_docs: %doc Documentation/git-citool.html} -%if 0%{?rhel} == 8 && "%{_arch}" == "s390x" -# Skip tests which fail on s390x on rhel-8 -# -# The following tests fail on s390x & el8. The cause should be investigated. -# However, it's a lower priority since the same tests work consistently on -# s390x with Fedora and RHEL-9. The failures seem to originate in t5300. -# -# t5300.10 'unpack without delta' -# t5300.12 'unpack with REF_DELTA' -# t5300.13 'unpack with REF_DELTA' -# t5300.14 'unpack with OFS_DELTA' -# t5300.18 'compare delta flavors' -# t5300.20 'use packed deltified (REF_DELTA) objects' -# t5300.23 'verify pack' -# t5300.24 'verify pack -v' -# t5300.25 'verify-pack catches mismatched .idx and .pack files' -# t5300.29 'verify-pack catches a corrupted sum of the index file itself' -# t5300.30 'build pack index for an existing pack' -# t5300.45 'make sure index-pack detects the SHA1 collision' -# t5300.46 'make sure index-pack detects the SHA1 collision (large blobs)' -# t5303.5 'create corruption in data of first object' -# t5303.7 '... and loose copy of second object allows for partial recovery' -# t5303.11 'create corruption in data of first delta' -# t6300.35 'basic atom: head objectsize:disk' -# t6300.91 'basic atom: tag objectsize:disk' -# t6300.92 'basic atom: tag *objectsize:disk' -GIT_SKIP_TESTS="$GIT_SKIP_TESTS t5300.1[02348] t5300.2[03459] t5300.30 t5300.4[56] t5303.[57] t5303.11 t6300.35 t6300.9[12]" -%endif -# endif rhel == 8 && arch == s390x +%files -n gitk +%defattr(-,root,root) +%doc Documentation/*gitk*.txt +%{_bindir}/*gitk* +%{_datadir}/gitk +%{!?_without_docs: %{_mandir}/man1/*gitk*.1*} +%{!?_without_docs: %doc Documentation/*gitk*.html } -%if "%{_arch}" == "s390x" -# Skip tests which fail on s390x -# -# The following tests are failing on s390x. -# https://lore.kernel.org/git/4dc4c8cd-c0cc-4784-8fcf-defa3a051087@mit.edu/ -# -# t8020.16 'cross merge boundaries in blaming' -# t8020.19 'last-modified merge undoes changes' -GIT_SKIP_TESTS="$GIT_SKIP_TESTS t8020.16 t8020.19" -%endif -# endif "%{_arch}" == "s390x" -export GIT_SKIP_TESTS +%files -n perl-Git -f perl-git-files +%defattr(-,root,root) +%exclude %{_mandir}/man3/*Git*SVN*.3pm* +%{!?_without_docs: %{_mandir}/man3/*Git*.3pm*} -# Set LANG so various UTF-8 tests are run -export LANG=en_US.UTF-8 +%files -n perl-Git-SVN -f perl-git-svn-files +%defattr(-,root,root) +%{!?_without_docs: %{_mandir}/man3/*Git*SVN*.3pm*} -# Explicitly enable tests which may be skipped opportunistically -# Check for variables set via test_bool_env in the test suite: -# git grep 'test_bool_env GIT_' -- t/{lib-,t[0-9]}*.sh | -# sed -r 's/.* (GIT_[^ ]+) .*/\1/g' | sort -u -export GIT_TEST_GIT_DAEMON=true -export GIT_TEST_HTTPD=true -export GIT_TEST_SVNSERVE=true -export GIT_TEST_SVN_HTTPD=true +%files -n emacs-git +%defattr(-,root,root) +%doc contrib/emacs/README +%dir %{elispdir} +%{elispdir}/*.elc +%{_emacs_sitestartdir}/git-init.el -# Create tmpdir for test output and update GIT_TEST_OPTS -# Also update GIT-BUILD-OPTIONS to keep make from any needless rebuilding -export 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 +%files -n emacs-git-el +%defattr(-,root,root) +%{elispdir}/*.el -# Run the tests -%__make -C t all || ./print-failed-test-output +%files daemon +%defattr(-,root,root) +%doc Documentation/*daemon*.txt +%config(noreplace)%{_sysconfdir}/xinetd.d/git +%{gitcoredir}/git-daemon +%{_var}/lib/git +%{!?_without_docs: %{_mandir}/man1/*daemon*.1*} +%{!?_without_docs: %doc Documentation/*daemon*.html} -# 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 +%files -n gitweb +%defattr(-,root,root) +%doc gitweb/INSTALL gitweb/README +%config(noreplace)%{_sysconfdir}/gitweb.conf +%config(noreplace)%{_sysconfdir}/httpd/conf.d/git.conf +%{_var}/www/git/ -# Clean up test dir -rmdir --ignore-fail-on-non-empty "$testdir" - -%post daemon -%systemd_post git.socket - -%preun daemon -%systemd_preun git.socket - -%postun daemon -%systemd_postun_with_restart git.socket - -%files -f bin-man-doc-git-files -%{_datadir}/git-core/contrib/diff-highlight %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 -%{bash_completions_dir}/git -%{_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 - -%if %{with libsecret} -%files credential-libsecret -%{gitexecdir}/git-credential-libsecret -%endif -# endif with libsecret - -%if %{with cvs} -%files cvs -%{_pkgdocdir}/*git-cvs*.adoc -%{_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*.adoc -%{_unitdir}/git.socket -%config(noreplace) %{_unitdir}/git@.service -%{gitexecdir}/git-daemon -%{_localstatedir}/lib/git -%{?with_docs:%{_mandir}/man1/git-daemon*.1*} -%{?with_docs:%{_pkgdocdir}/git-daemon*.html} - -%files email -%{_pkgdocdir}/*email*.adoc -%{gitexecdir}/*email* -%{?with_docs:%{_mandir}/man1/*email*.1*} -%{?with_docs:%{_pkgdocdir}/*email*.html} - -%files -n gitk -%{_pkgdocdir}/*gitk*.adoc -%{_bindir}/*gitk* -%{_datadir}/gitk -%{bash_completions_dir}/gitk -%{?with_docs:%{_mandir}/man1/*gitk*.1*} -%{?with_docs:%{_pkgdocdir}/*gitk*.html} - -%files -n gitweb -%{_pkgdocdir}/*.gitweb -%{_pkgdocdir}/gitweb*.adoc -%{?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.adoc -%{_pkgdocdir}/git-citool.adoc -%{?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 -%{gitexecdir}/git-instaweb -%{_pkgdocdir}/git-instaweb.adoc -%{?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*.adoc -%{?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.adoc -%{?with_docs:%{_mandir}/man1/git-subtree.1*} -%{?with_docs:%{_pkgdocdir}/git-subtree.html} - -%files svn -%{gitexecdir}/git-svn -%{_pkgdocdir}/git-svn.adoc -%{?with_docs:%{_mandir}/man1/git-svn.1*} -%{?with_docs:%{_pkgdocdir}/git-svn.html} - %changelog -* Thu Nov 20 2025 Ondřej Pohořelský - 2.52.0-1 -- update to 2.52.0 +* Wed Mar 29 2017 Petr Stodulka - 1.8.2.3-2 +- do not put unsanitized branch names in $PS1 + Resolves: CVE-2014-9938 -* Thu Oct 23 2025 Ondřej Pohořelský - 2.51.1-1 -- update to 2.51.1 +* Mon Apr 18 2016 Todd Zullinger - 1.8.2.3-1 +- Update to 1.8.2.3 +- Apply Petr's fix for CVE-2016-2315 CVE-2016-2324 from el6 (#1318252) -* Sun Oct 12 2025 Yaakov Selkowitz - 2.51.0-3 -- Revbump for tcl/tk 9 +* Sun Nov 01 2015 Petr Stodulka - 1.8.2.1-2 +- fix arbitrary code execution via crafted URLs + Resolves: #1269798 -* Thu Aug 21 2025 Ondřej Pohořelský - 2.51.0-2 -- exclude sample hook files from automatic dependency detection +* Sun Apr 14 2013 Todd Zullinger - 1.8.2.1-1 +- Update to 1.8.2.1 +- Exclude optional perl(YAML::Any) dependency on EL-5 -* Wed Aug 20 2025 Ondřej Pohořelský - 2.51.0-1 -- update to 2.51.0 +* Wed Apr 10 2013 Jon Ciesla - 1.8.2-3 +- Drop desktop vendor tag for >= f19. -* Wed Jul 23 2025 Fedora Release Engineering - 2.50.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild +* Wed Mar 27 2013 Todd Zullinger - 1.8.2-2 +- Require perl(Term::ReadKey) for git add --interactive (#928328) +- Drop DESTDIR from python instlibdir +- Fix bogus changelog dates -* Tue Jul 08 2025 Ondřej Pohořelský - 2.50.1-1 -- update to 2.50.1 +* Tue Mar 19 2013 Adam Tkac - 1.8.2-1 +- update to 1.8.2 +- 0001-DESTDIR-support-in-contrib-subtree-Makefile.patch has been merged -* Mon Jun 23 2025 Ondřej Pohořelský - 2.50.0-1 -- update to 2.50.0 +* Tue Feb 26 2013 Todd Zullinger - 1.8.1.4-2 +- Update asciidoc requirements, drop unsupported ASCIIDOC7 +- Define GNU_ROFF to force ASCII apostrophes in manpages (so copy/paste works) +- Install tcsh completion (requires manual setup by users) +- Clean up dist conditionals, don't pretend to support EL-4 builds +- Use prebuilt documentation on EL-5, where asciidoc is too old +- Respect gitexecdir variable in git-subtree install -* Mon Mar 24 2025 Ondřej Pohořelský - 2.49.0-2 -- add the option to sanitize sideband channel messages +* Wed Feb 20 2013 Adam Tkac - 1.8.1.4-1 +- update to 1.8.1.4 -* Mon Mar 17 2025 Ondřej Pohořelský - 2.49.0-1 -- update to 2.49.0 +* Wed Jan 30 2013 Adam Tkac - 1.8.1.2-1 +- update to 1.8.1.2 +- own directories which should be owned (#902517) -* Thu Feb 6 2025 Yanko Kaneti - 2.48.1-3 -- Keep gitk on tcl/tk 8.x until its ready for 9 +* Thu Jan 03 2013 Adam Tkac - 1.8.1-1 +- update to 1.8.1 +- build git-svn as arch subpkg due to new git-remote-testsvn binary -* Thu Jan 16 2025 Fedora Release Engineering - 2.48.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild +* Tue Dec 11 2012 Adam Tkac - 1.8.0.2-1 +- update to 1.8.0.2 -* Wed Jan 15 2025 Ondřej Pohořelský - 2.48.1-1 -- update to 2.48.1 +* Thu Dec 06 2012 Adam Tkac - 1.8.0.1-2 +- don't install some unneeded credential-gnome-keyring stuff -* Mon Jan 13 2025 Ondřej Pohořelský - 2.48.0-1 -- update to 2.48.0 +* Thu Nov 29 2012 Adam Tkac - 1.8.0.1-1 +- update to 1.8.0.1 +- include git-subtree in git rpm (#864651) -* Mon Nov 25 2024 Ondřej Pohořelský - 2.47.1-1 -- update to 2.47.1 +* Mon Oct 29 2012 Adam Tkac - 1.8.0-1 +- update to 1.8.0 +- include git-credential-gnome-keyring helper in git pkg +- 0001-cvsimport-strip-all-inappropriate-tag-strings.patch was merged -* Tue Oct 08 2024 Ondřej Pohořelský - 2.47.0-1 -- update to 2.47.0 +* Thu Oct 25 2012 Adam Tkac - 1.7.12.1-2 +- move git-prompt.sh into usr/share/git-core/contrib/completion (#854061) -* Tue Sep 24 2024 Ondřej Pohořelský - 2.46.2-1 -- update to 2.46.2 +* Thu Sep 27 2012 Adam Tkac - 1.7.12.1-1 +- update to 1.7.12.1 +- cvsimport should skip more characters (#850640) -* Mon Sep 16 2024 Ondřej Pohořelský - 2.46.1-1 -- update to 2.46.1 +* Thu Aug 23 2012 Todd Zullinger - 1.7.12-2 +- Install git-prompt.sh which provides __git_ps1() -* Mon Aug 05 2024 Ondřej Pohořelský - 2.46.0-1 -- update to 2.46.0 +* Wed Aug 22 2012 Adam Tkac - 1.7.12-1 +- update to 1.7.12 -* Thu Jul 18 2024 Fedora Release Engineering - 2.45.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild +* Wed Aug 15 2012 Todd Zullinger - 1.7.11.5-1 +- Update to 1.7.11.5 +- Add git-p4 subpackage (#844008) -* Mon Jun 03 2024 Ondřej Pohořelský - 2.45.2-2 -- add glibc-utils BuildRequires +* Tue Aug 07 2012 Adam Tkac - 1.7.11.4-1 +- update to 1.7.11.4 -* Mon Jun 03 2024 Ondřej Pohořelský - 2.45.2-1 -- update to 2.45.2 +* Fri Jul 27 2012 Fedora Release Engineering - 1.7.11.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild -* Wed May 15 2024 Ondřej Pohořelský - 2.45.1-1 -- update to 2.45.1 +* Wed Jul 25 2012 Todd Zullinger - 1.7.11.2-2 +- Split perl(Git::SVN) into its own package (#843182) -* Tue Apr 30 2024 Ondřej Pohořelský - 2.45.0-1 -- update to 2.45.0 +* Mon Jul 16 2012 Adam Tkac - 1.7.11.2-1 +- update to 1.7.11.2 -* Mon Feb 26 2024 Ondřej Pohořelský - 2.44.0-1 -- update to 2.44.0 +* Thu Jun 28 2012 Petr Pisar - 1.7.10.4-2 +- Perl 5.16 rebuild -* Thu Feb 15 2024 Ondřej Pohořelský - 2.43.2-1 -- update to 2.43.2 -- Resolves: #2264318 +* Fri Jun 15 2012 Adam Tkac - 1.7.10.4-1 +- update to 1.7.10.4 -* Mon Feb 12 2024 Ondřej Pohořelský - 2.43.1-1 -- update to 2.43.1 -- resolves: #2263575 +* Thu Jun 07 2012 Petr Pisar - 1.7.10.2-2 +- Perl 5.16 rebuild -* Wed Jan 24 2024 Fedora Release Engineering - 2.43.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild +* Mon May 14 2012 Adam Tkac - 1.7.10.2-1 +- update to 1.7.10.2 -* Fri Jan 19 2024 Fedora Release Engineering - 2.43.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild +* Thu May 03 2012 Adam Tkac - 1.7.10.1-1 +- update to 1.7.10.1 -* Tue Nov 21 2023 Ondřej Pohořelský - 2.43.0-1 -- update to 2.43.0 +* Tue Apr 10 2012 Adam Tkac - 1.7.10-1 +- update to 1.7.10 -* Tue Nov 14 2023 Ondřej Pohořelský - 2.42.1-1 -- update to 2.42.1 +* Fri Mar 30 2012 Adam Tkac - 1.7.9.5-1 +- update to 1.7.9.5 -* Wed Nov 1 2023 Joe Orton - 2.42.0-2 -- remove explicit BR for apr-util-bdb (#2247532) +* Thu Mar 08 2012 Adam Tkac - 1.7.9.3-1 +- update to 1.7.9.3 -* Tue Oct 03 2023 Ondřej Pohořelský - 2.42.0-1 -- update to 2.42.0 +* Wed Feb 15 2012 Todd Zullinger - 1.7.9.1-1 +- Update to 1.7.9.1 +- Fix EPEL builds (rpm doesn't accept mutiple -f options in %files) -* Wed Jul 19 2023 Fedora Release Engineering - 2.41.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild +* Fri Feb 10 2012 Petr Pisar - 1.7.9-2 +- Rebuild against PCRE 8.30 -* Thu Jun 01 2023 Todd Zullinger - 2.41.0-1 -- update to 2.41.0 +* Mon Jan 30 2012 Adam Tkac - 1.7.9-1 +- update to 1.7.9 -* Wed May 24 2023 Todd Zullinger - 2.41.0~rc2-1 -- update to 2.41.0-rc2 +* Thu Jan 19 2012 Adam Tkac - 1.7.8.4-1 +- update to 1.7.8.4 -* Fri May 19 2023 Todd Zullinger - 2.41.0~rc1-1 -- update to 2.41.0-rc1 +* Thu Jan 12 2012 Adam Tkac - 1.7.8.3-1 +- update to 1.7.8.3 -* Mon May 15 2023 Todd Zullinger - 2.41.0~rc0-1 -- update to 2.41.0-rc0 +* Mon Jan 02 2012 Adam Tkac - 1.7.8.2-1 +- update to 1.7.8.2 -* Fri May 12 2023 Todd Zullinger - 2.40.1-2 -- use tilde versioning for release candidates +* Fri Dec 23 2011 Adam Tkac - 1.7.8.1-1 +- update to 1.7.8.1 -* Tue Apr 25 2023 Todd Zullinger - 2.40.1-1 -- update to 2.40.1 (CVE-2023-25652, CVE-2023-25815, CVE-2023-29007) +* Wed Dec 07 2011 Adam Tkac - 1.7.8-1 +- update to 1.7.8 -* Mon Mar 13 2023 Todd Zullinger - 2.40.0-1 -- update to 2.40.0 +* Tue Nov 29 2011 Adam Tkac - 1.7.7.4-1 +- update to 1.7.7.4 -* Tue Mar 07 2023 Todd Zullinger - 2.40.0-0.2.rc2 -- update to 2.40.0-rc2 +* Thu Nov 10 2011 Adam Tkac - 1.7.7.3-1 +- update to 1.7.7.3 -* Wed Mar 01 2023 Todd Zullinger - 2.40.0-0.1.rc1 -- update to 2.40.0-rc1 +* Mon Nov 07 2011 Adam Tkac - 1.7.7.2-1 +- update to 1.7.7.2 -* Fri Feb 24 2023 Todd Zullinger - 2.40.0-0.0.rc0 -- update to 2.40.0-rc0 +* Tue Nov 01 2011 Adam Tkac - 1.7.7.1-1 +- update to 1.7.7.1 -* Tue Feb 14 2023 Todd Zullinger - 2.39.2-1 -- update to 2.39.2 (CVE-2023-22490, CVE-2023-23946) +* Wed Oct 26 2011 Fedora Release Engineering - 1.7.7-2 +- Rebuilt for glibc bug#747377 -* Fri Feb 03 2023 Todd Zullinger - 2.39.1-2 -- drop perl Email::Valid dep on RHEL (#2166718) +* Thu Oct 20 2011 Adam Tkac - 1.7.7-1 +- update to 1.7.7 + - git-1.6-update-contrib-hooks-path.patch is no longer needed -* Thu Jan 19 2023 Fedora Release Engineering - 2.39.1-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild +* Mon Sep 26 2011 Adam Tkac - 1.7.6.4-1 +- update to 1.7.6.4 -* Tue Jan 17 2023 Todd Zullinger - 2.39.1-1 -- update to 2.39.1 (CVE-2022-41903, CVE-2022-23521) +* Wed Sep 07 2011 Todd Zullinger - 1.7.6.2-1 +- Update to 1.7.6.2 +- Fixes incompatibility caused by git push --quiet fix + http://thread.gmane.org/gmane.comp.version-control.git/180652 -* Mon Dec 12 2022 Todd Zullinger - 2.39.0-1 -- update to 2.39.0 +* Mon Aug 29 2011 Todd Zullinger - 1.7.6.1-2 +- Build with PCRE support (#734269) -* Mon Dec 05 2022 Todd Zullinger - 2.39.0-0.2.rc2 -- update to 2.39.0-rc2 +* Fri Aug 26 2011 Todd Zullinger - 1.7.6.1-1 +- Update to 1.7.6.1 +- Include gpg signature for tarball in SRPM -* Wed Nov 30 2022 Todd Zullinger - 2.39.0-0.1.rc1 -- update to 2.39.0-rc1 +* Fri Aug 05 2011 Todd Zullinger - 1.7.6-5 +- Fix git push --quiet, thanks to Clemens Buchacher (#725593) +- Obsolete git-arch as needed -* Wed Nov 23 2022 Todd Zullinger - 2.39.0-0.0.rc0 -- update to 2.39.0-rc0 -- add mod_http2 BuildRequires for tests +* Tue Jul 26 2011 Todd Zullinger - 1.7.6-4 +- Drop git-arch on fedora >= 16, the tla package has been retired +- Rework most spec file dist conditionals to make future changes easier -* Sat Nov 12 2022 Todd Zullinger - 2.38.1-3 -- use %%bash_completions_dir +* Thu Jul 21 2011 Petr Sabata - 1.7.6-3 +- Perl mass rebuild -* Mon Nov 07 2022 Todd Zullinger - 2.38.1-2 -- don't ship contrib/persistent-https as documentation -- update license data and convert to SPDX format +* Wed Jul 20 2011 Petr Sabata - 1.7.6-2 +- Perl mass rebuild -* Tue Oct 18 2022 Todd Zullinger - 2.38.1-1 -- update to 2.38.1 (CVE-2022-39253, CVE-2022-39260) +* Wed Jun 29 2011 Adam Tkac - 1.7.6-1 +- update to 1.7.6 -* Mon Oct 03 2022 Todd Zullinger - 2.38.0-1 -- update to 2.38.0 +* Mon Jun 20 2011 Marcela Mašláňová - 1.7.5.4-2 +- Perl mass rebuild -* Wed Sep 28 2022 Todd Zullinger - 2.38.0-0.2.rc2 -- update to 2.38.0-rc2 +* Thu Jun 09 2011 Adam Tkac - 1.7.5.4-1 +- update to 1.7.5.4 -* Wed Sep 21 2022 Todd Zullinger - 2.38.0-0.1.rc1 -- update to 2.38.0-rc1 -- git-subtree sub-package is noarch +* Tue May 24 2011 Adam Tkac - 1.7.5.2-1 +- update to 1.7.5.2 -* Fri Sep 16 2022 Todd Zullinger - 2.38.0-0.0.rc0 -- update to 2.38.0-rc0 +* Thu May 05 2011 Adam Tkac - 1.7.5.1-1 +- update to 1.7.5.1 -* Tue Aug 30 2022 Todd Zullinger - 2.37.3-1 -- update to 2.37.3 -- remove %%changelog entries prior to 2020 -- tests: try harder to find open ports for apache, git, and svn +* Wed Apr 27 2011 Adam Tkac - 1.7.5-1 +- update to 1.7.5 -* Sun Aug 14 2022 Todd Zullinger - 2.37.2-2 -- consolidate git-archimport removal in %%prep +* Mon Apr 11 2011 Adam Tkac - 1.7.4.4-1 +- update to 1.7.4.4 -* Thu Aug 11 2022 Todd Zullinger - 2.37.2-1 -- update to 2.37.2 +* Mon Mar 28 2011 Adam Tkac - 1.7.4.2-1 +- update to 1.7.4.2 +- move man3/Git.3pm file to perl-Git subpkg (#664889) +- add perl-DBD-SQLite dependency to git-cvs (#602410) -* Sat Jul 23 2022 Todd Zullinger - 2.37.1-2 -- require systemd-rpm-macros rather than systemd +* Sun Feb 13 2011 Todd Zullinger - 1.7.4.1-1 +- Update to 1.7.4.1 +- Clean up documentation settings (the defaults changed in 1.7.4) +- Improve EL-5 compatibility, thanks to Kevin Fenzi for emacs testing -* Thu Jul 21 2022 Fedora Release Engineering - 2.37.1-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild +* Tue Feb 08 2011 Fedora Release Engineering - 1.7.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild -* Tue Jul 12 2022 Todd Zullinger - 2.37.1-1 -- update to 2.37.1 (CVE-2022-29187) +* Mon Jan 31 2011 Adam Tkac - 1.7.4-1 +- update to 1.7.4 -* Mon Jun 27 2022 Todd Zullinger - 2.37.0-1 -- update to 2.37.0 +* Wed Jan 19 2011 Adam Tkac - 1.7.3.5-1 +- update to 1.7.3.5 -* Wed Jun 22 2022 Todd Zullinger - 2.37.0-0.2.rc2 -- update to 2.37.0-rc2 +* Thu Dec 16 2010 Adam Tkac - 1.7.3.4-1 +- update to 1.7.3.4 -* Fri Jun 17 2022 Todd Zullinger - 2.37.0-0.1.rc1 -- update to 2.37.0-rc1 +* Mon Dec 06 2010 Adam Tkac - 1.7.3.3-1 +- update to 1.7.3.3 -* Tue Jun 14 2022 Todd Zullinger - 2.37.0-0.0.rc0 -- update to 2.37.0-rc0 -- fix GIT_SKIP_TESTS for EL8 s390x -- remove --with/--without emacs build conditional +* Fri Oct 22 2010 Adam Tkac - 1.7.3.2-1 +- update to 1.7.3.2 -* Fri Jun 03 2022 Jitka Plesnikova - 2.36.1-1.2 -- Perl 5.36 re-rebuild of bootstrapped packages +* Thu Sep 30 2010 Adam Tkac - 1.7.3.1-1 +- update to 1.7.3.1 -* Wed Jun 01 2022 Jitka Plesnikova - 2.36.1-1.1 -- Perl 5.36 rebuild +* Wed Sep 29 2010 jkeating - 1.7.3-3 +- Rebuilt for gcc bug 634757 -* Fri May 06 2022 Todd Zullinger - 2.36.1-1 -- update to 2.36.1 +* Mon Sep 20 2010 Todd Zullinger - 1.7.3-2 +- Ensure the release notes are included in %%doc -* Mon Apr 18 2022 Todd Zullinger - 2.36.0-1 -- update to 2.36.0 +* Sun Sep 19 2010 Todd Zullinger - 1.7.3-1 +- Update to 1.7.3 -* Thu Apr 14 2022 Todd Zullinger - 2.36.0-0.3.rc2 -- usability improvements on top of CVE-2022-24765 +* Tue Sep 07 2010 Adam Tkac - 1.7.2.3-1 +- update to 1.7.2.3 -* Wed Apr 13 2022 Todd Zullinger - 2.36.0-0.2.rc2 -- update to 2.36.0-rc2 (CVE-2022-24765) -- disable failing tests on s390x on EL8 +* Fri Aug 20 2010 Adam Tkac - 1.7.2.2-1 +- update to 1.7.2.2 -* Fri Apr 08 2022 Todd Zullinger - 2.36.0-0.1.rc1 -- update to 2.36.0-rc1 +* Fri Jul 30 2010 Thomas Spura - 1.7.2.1-2 +- cherry-pick: "Do not unquote + into ' ' in URLs" -* Tue Apr 05 2022 Todd Zullinger - 2.36.0-0.0.rc0 -- update to 2.36.0-rc0 -- use httpd-core for tests on Fedora >= 37 +* Thu Jul 29 2010 Todd Zullinger - 1.7.2.1-1 +- Update to git-1.7.2.1 -* Sat Jan 29 2022 Todd Zullinger - 2.35.1-1 -- update to 2.35.1 +* Thu Jul 22 2010 Adam Tkac - 1.7.2-1 +- update to 1.7.2 -* Mon Jan 24 2022 Todd Zullinger - 2.35.0-1 -- update to 2.35.0 -- set path to linker script in %%_package_note_file +* Fri Jul 02 2010 Adam Tkac - 1.7.1.1-1 +- update to 1.7.1.1 -* Sat Jan 22 2022 Todd Zullinger - 2.35.0-0.2.rc2.3 -- remove contrib/scalar to avoid cruft in git-core-doc +* Fri Jun 25 2010 Adam Tkac - 1.7.1-2 +- rebuild against new perl -* Fri Jan 21 2022 Todd Zullinger - 2.35.0-0.2.rc2.2 -- fix compilation on EL7 +* Tue May 04 2010 Todd Zullinger - 1.7.1-1 +- git-1.7.1 +- Fix conditionals for EL-6 +- Comply with Emacs add-on packaging guidelines (#573423), Jonathan Underwood + - Place elisp source files in separate emacs-git-el package + - Place git support files in own directory under site-lisp + - Use Emacs packaging macros -* Thu Jan 20 2022 Todd Zullinger - 2.35.0-0.2.rc2.1 -- checkout: avoid BUG() when hitting a broken repository (rhbz#2042920) +* Thu Apr 29 2010 Marcela Maslanova - 1.7.0.1-2 +- Mass rebuild with perl-5.12.0 -* Wed Jan 19 2022 Todd Zullinger - 2.35.0-0.2.rc2 -- update to 2.35.0-rc2 +* Mon Mar 01 2010 Todd Zullinger - 1.7.0.1-1 +- git-1.7.0.1 -* Sat Jan 15 2022 Todd Zullinger - 2.35.0-0.1.rc1 -- update to 2.35.0-rc1 +* Sat Feb 13 2010 Todd Zullinger - 1.7.0-1 +- git-1.7.0 +- Link imap-send with libcrypto (#565147) +- Disable building of unused python remote helper libs -* Mon Jan 10 2022 Todd Zullinger - 2.35.0-0.0.rc0 -- update to 2.35.0-rc0 +* Tue Jan 26 2010 Todd Zullinger - 1.6.6.1-1 +- git-1.6.6.1 +- Use %%{gitcoredir}/git-daemon as xinetd server option, for SELinux (#529682) +- Make %%{_var}/lib/git the default gitweb projectroot (#556299) +- Include gitweb/INSTALL file as documentation, the gitweb README refers to it +- Ship a short example gitweb config file (%%{_sysconfdir}/gitweb.conf) +- Remove long fixed xinetd IPv6 workaround on Fedora (#557528) +- Install missing gitweb.js (#558740) -* Thu Nov 25 2021 Todd Zullinger - 2.34.1-1 -- update to 2.34.1 -- fix gpgsm issues with gnupg-2.3 +* Wed Dec 23 2009 Todd Zullinger - 1.6.6-1 +- git-1.6.6 -* Mon Nov 15 2021 Todd Zullinger - 2.34.0-1 -- update to 2.34.0 +* Fri Dec 11 2009 Todd Zullinger - 1.6.5.6-1 +- git-1.6.5.6 -* Sun Nov 14 2021 Todd Zullinger - 2.33.1-3 -- add more git-email perl dependencies -- Resolves: rhbz#2020487 +* Sun Dec 06 2009 Todd Zullinger - 1.6.5.5-1 +- git-1.6.5.5 -* Thu Nov 11 2021 Ondřej Pohořelský - 2.33.1-2 -- add Perl requires to git-email -- Resolves: rhbz#2020487 +* Fri Dec 4 2009 Stepan Kasal - 1.6.5.3-2 +- rebuild against perl 5.10.1 -* Wed Oct 13 2021 Todd Zullinger - 2.33.1-1 -- update to 2.33.1 +* Sat Nov 21 2009 Todd Zullinger - 1.6.5.3-1 +- git-1.6.5.3 +- Only BR perl(Error) on Fedora and RHEL >= 5 +- Use config.mak to set build options +- Improve compatibility with EPEL +- Replace $RPM_BUILD_ROOT with %%{buildroot} +- Fix Obsoletes for those rebuilding on EL-4 -* Mon Sep 27 2021 Ondřej Pohořelský - 2.33.0-1 -- update to 2.33.0 -- contrib/hooks/multimail is no longer distributed with git +* Mon Oct 26 2009 Todd Zullinger - 1.6.5.2-1 +- git-1.6.5.2 +- Drop asciidoc --unsafe option, it should not be needed anymore +- Don't use install -t/-T, they're not compatible with older coreutils +- Don't use -perm /a+x with find, it's incompatible with older findutils + +* Sat Oct 17 2009 Todd Zullinger - 1.6.5.1-1 +- git-1.6.5.1 + +* Sun Oct 11 2009 Todd Zullinger - 1.6.5-1 +- git-1.6.5 + +* Mon Sep 28 2009 Todd Zullinger - 1.6.5-0.2.rc2 +- git-1.6.5.rc2 +- Enable Linus' block-sha1 implementation + +* Wed Sep 16 2009 Todd Zullinger - 1.6.4.4-1 +- git-1.6.4.4 + +* Sun Sep 13 2009 Todd Zullinger - 1.6.4.3-1 +- git-1.6.4.3 + +* Sun Aug 30 2009 Todd Zullinger - 1.6.4.2-1 +- git-1.6.4.2 + +* Sat Aug 22 2009 Todd Zullinger - 1.6.4.1-1 +- git-1.6.4.1 + +* Fri Aug 21 2009 Tomas Mraz - 1.6.4-2 +- rebuilt with new openssl + +* Wed Jul 29 2009 Todd Zullinger - 1.6.4-1 +- git-1.6.4 + +* Fri Jul 24 2009 Fedora Release Engineering - 1.6.3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Sun Jun 28 2009 Todd Zullinger - 1.6.3.3-1 +- git-1.6.3.3 +- Move contributed hooks to %%{_datadir}/git-core/contrib/hooks (bug 500137) +- Fix rpmlint warnings about Summary and git-mergetool--lib missing shebang + +* Fri Jun 19 2009 Todd Zullinger - 1.6.3.2-3 +- Temporarily disable asciidoc's safe mode until bug 506953 is fixed + +* Fri Jun 19 2009 Todd Zullinger - 1.6.3.2-2 +- Fix git-daemon hang on invalid input (CVE-2009-2108, bug 505761) + +* Fri Jun 05 2009 Todd Zullinger - 1.6.3.2-1 +- git-1.6.3.2 +- Require emacs >= 22.2 for emacs support (bug 495312) +- Add a .desktop file for git-gui (bug 498801) +- Set ASCIIDOC8 and ASCIIDOC_NO_ROFF to correct documentation issues, + the sed hack to fix bug 485161 should no longer be needed +- Escape newline in git-daemon xinetd description (bug 502393) +- Add xinetd to git-daemon Requires (bug 504105) +- Organize BuildRequires/Requires, drop redundant expat Requires +- Only build noarch subpackages on Fedora >= 10 +- Only build emacs and arch subpackages on Fedora +- Handle curl/libcurl naming for EPEL and Fedora + +* Fri Apr 03 2009 Todd Zullinger - 1.6.2.2-1 +- git-1.6.2.2 +- Include contrib/ dir in %%doc (bug 492490) +- Don't set DOCBOOK_XSL_172, fix the '\&.ft' with sed (bug 485161) +- Ignore Branches output from cvsps-2.2b1 (bug 490602) +- Remove shebang from bash-completion script +- Include README in gitweb subpackage + +* Mon Mar 09 2009 Todd Zullinger - 1.6.2-1 +- git-1.6.2 +- Include contrib/emacs/README in emacs subpackage +- Drop upstreamed git-web--browse patch + +* Tue Feb 24 2009 Todd Zullinger - 1.6.1.3-2 +- Require perl(Authen::SASL) in git-email (bug 483062) +- Build many of the subpackages as noarch +- Update URL field -* Tue Sep 14 2021 Sahana Prasad - 2.32.0-1.2 -- Rebuilt with OpenSSL 3.0.0 +* Mon Feb 09 2009 Todd Zullinger 1.6.1.3-1 +- git-1.6.1.3 +- Set htmldir so "git help -w " works +- Patch git-web--browse to not use "/sbin/start" to browse +- Include git-daemon documentation in the git-daemon package -* Thu Jul 22 2021 Fedora Release Engineering - 2.32.0-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild +* Thu Jan 29 2009 Josh Boyer 1.6.1.2-1 +- git-1.6.1.2 -* Sun Jun 06 2021 Todd Zullinger - 2.32.0-1 -- update to 2.32.0 -- add perl(File::Compare) BuildRequires -- fix var to enable git-svn tests with httpd -- remove %%changelog entries prior to 2019 +* Mon Jan 26 2009 Todd Zullinger 1.6.1.1-1 +- git-1.6.1.1 +- Make compile more verbose -* Thu Jun 03 2021 Todd Zullinger - 2.32.0-0.5.rc3 -- drop jgit on Fedora >= 35 - Resolves: rhbz#1965808 +* Fri Jan 16 2009 Tomas Mraz 1.6.1-2 +- rebuild with new openssl -* Wed Jun 02 2021 Todd Zullinger - 2.32.0-0.4.rc3 -- update to 2.32.0-rc3 +* Sat Jan 03 2009 Todd Zullinger 1.6.1-1 +- Install git-* commands in %%{_libexecdir}/git-core, the upstream default +- Remove libcurl from Requires, rpm will pick this up automatically +- Consolidate build/install options in %%make_git (Roland McGrath) +- Include DirectoryIndex in gitweb httpd-config (bug 471692) +- Define DOCBOOK_XSL_172 to fix minor manpage issues +- Rename %%{_var}/lib/git-daemon to %%{_var}/lib/git +- Preserve timestamps on installed files +- Quiet some rpmlint complaints +- Use macros more consistently -* Fri May 28 2021 Todd Zullinger - 2.32.0-0.3.rc2 -- update to 2.32.0-rc2 +* Sat Dec 20 2008 Todd Zullinger 1.6.0.6-1 +- git-1.6.0.6 +- Fixes a local privilege escalation bug in gitweb + (http://article.gmane.org/gmane.comp.version-control.git/103624) +- Add gitk Requires to git-gui (bug 476308) -* Mon May 24 2021 Jitka Plesnikova - 2.32.0-0.2.rc1 -- Perl 5.34 re-rebuild of bootstrapped packages +* Thu Dec 11 2008 Josh Boyer 1.6.0.5-1 +- git-1.6.0.5 -* Sat May 22 2021 Todd Zullinger - 2.32.0-0.1.rc1 -- update to 2.32.0-rc1 -- rearrange python2/python3 conditionals -- re-enable git-p4 with python3 -- add coreutils BuildRequires -- remove unneeded NEEDS_CRYPTO_WITH_SSL +* Mon Nov 17 2008 Seth Vidal +- switch from /srv/git to /var/lib/git-daemon for packaging rules compliance -* Fri May 21 2021 Jitka Plesnikova - 2.31.1-3.1 -- Perl 5.34 rebuild +* Fri Nov 14 2008 Josh Boyer 1.6.0.4-1 +- git-1.6.0.4 -* Mon May 17 2021 Todd Zullinger - 2.32.0-0.0.rc0 -- update to 2.32.0-rc0 +* Wed Oct 22 2008 Josh Boyer 1.6.0.3-1 +- git-1.6.0.3 +- Drop curl requirement in favor of libcurl (bug 449388) +- Add requires for SMTP-SSL perl module to make git-send-email work (bug 443615) -* Sun May 16 2021 Todd Zullinger -- clean up various dist conditionals +* Thu Aug 28 2008 James Bowes 1.6.0.1-1 +- git-1.6.0.1 -* Wed Apr 21 2021 Todd Zullinger - 2.31.1-3 -- apply upstream patch to fix clone --bare segfault - Resolves: rhbz#1952030 +* Thu Jul 24 2008 James Bowes 1.5.6-4 +- git-1.5.6.4 -* Tue Apr 06 2021 Todd Zullinger - 2.31.1-2 -- remove two stray %%defattr macros from %%files sections +* Thu Jun 19 2008 James Bowes 1.5.6-1 +- git-1.5.6 -* Sat Mar 27 2021 Todd Zullinger - 2.31.1-1 -- update to 2.31.1 +* Tue Jun 3 2008 Stepan Kasal 1.5.5.3-2 +- use tar.bz2 instead of tar.gz -* Fri Mar 19 2021 Todd Zullinger - 2.31.0-2 -- fix git bisect with annotaged tags +* Wed May 28 2008 James Bowes 1.5.5.3-1 +- git-1.5.5.3 -* Mon Mar 15 2021 Todd Zullinger - 2.31.0-1 -- update to 2.31.0 +* Mon May 26 2008 James Bowes 1.5.5.2-1 +- git-1.5.5.2 -* Tue Mar 09 2021 Todd Zullinger - 2.31.0-0.2.rc2 -- update to 2.31.0-rc2 +* Mon Apr 21 2008 James Bowes 1.5.5.1-1 +- git-1.5.5.1 -* Wed Mar 03 2021 Todd Zullinger - 2.31.0-0.1.rc1 -- update to 2.31.0-rc1 +* Wed Apr 09 2008 James Bowes 1.5.5-1 +- git-1.5.5 -* Tue Mar 02 2021 Todd Zullinger - 2.31.0-0.0.rc0 -- update to 2.31.0-rc0 +* Fri Apr 04 2008 James Bowes 1.5.4.5-3 +- Remove the last two requires on git-core. -* Tue Mar 02 2021 Todd Zullinger - 2.30.1-3 -- use %%{gpgverify} macro to verify tarball signature +* Wed Apr 02 2008 James Bowes 1.5.4.5-2 +- Remove a patch that's already upstream. -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 2.30.1-2.1 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. +* Fri Mar 28 2008 James Bowes 1.5.4.5-1 +- git-1.5.4.5 -* Thu Feb 18 2021 Ondřej Pohořelský 1.5.4.4-4 +- Own /etc/bash_completion.d in case bash-completion isn't installed. -* Thu Feb 18 2021 Todd Zullinger -- re-enable t7812-grep-icase-non-ascii on s390x +* Tue Mar 25 2008 James Bowes 1.5.4.4-3 +- Include the sample hooks from contrib/hooks as docs (bug 321151). +- Install the bash completion script from contrib (bug 433255). +- Include the html docs in the 'core' package again (bug 434271). -* Tue Feb 09 2021 Todd Zullinger - 2.30.1-1 -- update to 2.30.1 +* Wed Mar 19 2008 James Bowes 1.5.4.4-2 +- Obsolete git <= 1.5.4.3, to catch going from F8 to rawhide/F9 -* Mon Feb 08 2021 Ondřej Pohořelský - 2.30.0-2 -- add rhel 9 conditional to require httpd instead of lighttpd in git-instaweb +* Thu Mar 13 2008 James Bowes 1.5.4.4-1 +- git-1.5.4.4 -* Tue Jan 26 2021 Fedora Release Engineering - 2.30.0-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild +* Mon Mar 3 2008 Tom "spot" Callaway 1.5.4.3-3 +- rebuild for new perl (again) + +* Sun Feb 24 2008 Bernardo Innocenti 1.5.4.3-2 +- Do not silently overwrite /etc/httpd/conf.d/git.conf + +* Sat Feb 23 2008 James Bowes 1.5.4.3-1 +- git-1.5.4.3 +- Include Kristian Høgsberg's changes to rename git-core to + git and git to git-all. + +* Sun Feb 17 2008 James Bowes 1.5.4.2-1 +- git-1.5.4.2 + +* Mon Feb 11 2008 Jeremy Katz - 1.5.4.1-2 +- Add upstream patch (e62a641de17b172ffc4d3a803085c8afbfbec3d1) to have + gitweb rss feeds point be commitdiffs instead of commit + +* Sun Feb 10 2008 James Bowes 1.5.4.1-1 +- git-1.5.4.1 + +* Tue Feb 05 2008 Tom "spot" Callaway 1.5.4-3 +- rebuild for new perl + +* Sun Feb 03 2008 James Bowes 1.5.4-1 +- Add BuidRequires on gettext. + +* Sat Feb 02 2008 James Bowes 1.5.4-1 +- git-1.5.4 + +* Tue Jan 08 2008 James Bowes 1.5.3.8-1 +- git-1.5.3.8 + +* Fri Dec 21 2007 James Bowes 1.5.3.7-2 +- Have git metapackage require explicit versions (bug 247214) + +* Mon Dec 03 2007 Josh Boyer 1.5.3.7-1 +- git-1.5.3.7 + +* Tue Nov 27 2007 Josh Boyer 1.5.3.6-1 +- git-1.5.3.6 +- git-core requires perl(Error) (bug 367861) +- git-svn requires perl(Term:ReadKey) (bug 261361) +- git-email requires perl-Git (bug 333061) + +* Wed Oct 24 2007 Lubomir Kundrak 1.5.3.4-2 +- git-Perl requires Error package + +* Tue Oct 09 2007 James Bowes 1.5.3.4-1 +- git-1.5.3.4 + +* Sun Sep 30 2007 James Bowes 1.5.3.3-1 +- git-1.5.3.3 + +* Wed Sep 26 2007 James Bowes 1.5.3.2-1 +- git-1.5.3.2 + +* Thu Sep 06 2007 Josh Boyer 1.5.3.1-2 +- Include git-gui and git-citool docs + +* Thu Sep 06 2007 Josh Boyer 1.5.3.1-1 +- git-1.5.3.1-1 + +* Thu Aug 23 2007 James Bowes 1.5.2.5-1 +- git-1.5.2.5-1 + +* Fri Aug 03 2007 Josh Boyer 1.5.2.4-1 +- git-1.5.2.4-1 + +* Tue Jul 03 2007 Josh Boyer 1.5.2.2-3 +- Add git-daemon and gitweb packages + +* Thu Jun 21 2007 Josh Boyer 1.5.2.2-2 +- Add emacs-git package (#235431) + +* Mon Jun 18 2007 James Bowes 1.5.2.2-1 +- git-1.5.2.2 + +* Fri Jun 08 2007 James Bowes 1.5.2.1-1 +- git-1.5.2.1 + +* Sun May 13 2007 Quy Tonthat +- Added lib files for git-gui +- Added Documentation/technical (As needed by Git Users Manual) + +* Tue May 8 2007 Quy Tonthat +- Added howto files + +* Fri Mar 30 2007 Chris Wright 1.5.0.6-1 +- git-1.5.0.6 + +* Mon Mar 19 2007 Chris Wright 1.5.0.5-1 +- git-1.5.0.5 + +* Tue Mar 13 2007 Chris Wright 1.5.0.3-1 +- git-1.5.0.3 + +* Fri Mar 2 2007 Chris Wright 1.5.0.2-2 +- BuildRequires perl-devel as of perl-5.8.8-14 (bz 230680) + +* Mon Feb 26 2007 Chris Wright 1.5.0.2-1 +- git-1.5.0.2 + +* Tue Feb 13 2007 Nicolas Pitre +- Update core package description (Git isn't as stupid as it used to be) + +* Mon Feb 12 2007 Junio C Hamano +- Add git-gui and git-citool. + +* Sun Dec 10 2006 Chris Wright 1.4.4.2-2 +- no need to install manpages executable (bz 216790) +- use bytes for git-cvsserver + +* Sun Dec 10 2006 Chris Wright 1.4.4.2-1 +- git-1.4.4.2 + +* Mon Nov 6 2006 Jindrich Novy 1.4.2.4-2 +- rebuild against the new curl + +* Tue Oct 17 2006 Chris Wright 1.4.2.4-1 +- git-1.4.2.4 + +* Wed Oct 4 2006 Chris Wright 1.4.2.3-1 +- git-1.4.2.3 + +* Fri Sep 22 2006 Chris Wright 1.4.2.1-1 +- git-1.4.2.1 + +* Mon Sep 11 2006 Chris Wright 1.4.2-1 +- git-1.4.2 + +* Thu Jul 6 2006 Chris Wright 1.4.1-1 +- git-1.4.1 + +* Tue Jun 13 2006 Chris Wright 1.4.0-1 +- git-1.4.0 + +* Thu May 4 2006 Chris Wright 1.3.3-1 +- git-1.3.3 +- enable git-email building, prereqs have been relaxed + +* Thu May 4 2006 Chris Wright 1.3.2-1 +- git-1.3.2 + +* Fri Apr 28 2006 Chris Wright 1.3.1-1 +- git-1.3.1 + +* Wed Apr 19 2006 Chris Wright 1.3.0-1 +- git-1.3.0 + +* Mon Apr 10 2006 Chris Wright 1.2.6-1 +- git-1.2.6 + +* Wed Apr 5 2006 Chris Wright 1.2.5-1 +- git-1.2.5 + +* Wed Mar 1 2006 Chris Wright 1.2.4-1 +- git-1.2.4 + +* Wed Feb 22 2006 Chris Wright 1.2.3-1 +- git-1.2.3 + +* Tue Feb 21 2006 Chris Wright 1.2.2-1 +- git-1.2.2 + +* Thu Feb 16 2006 Chris Wright 1.2.1-1 +- git-1.2.1 + +* Mon Feb 13 2006 Chris Wright 1.2.0-1 +- git-1.2.0 + +* Wed Feb 1 2006 Chris Wright 1.1.6-1 +- git-1.1.6 + +* Tue Jan 24 2006 Chris Wright 1.1.4-1 +- git-1.1.4 + +* Sun Jan 15 2006 Chris Wright 1.1.2-1 +- git-1.1.2 + +* Tue Jan 10 2006 Chris Wright 1.1.1-1 +- git-1.1.1 + +* Tue Jan 10 2006 Chris Wright 1.1.0-1 +- Update to latest git-1.1.0 (drop git-email for now) +- Now creates multiple packages: +- git-core, git-svn, git-cvs, git-arch, gitk + +* Mon Nov 14 2005 H. Peter Anvin 0.99.9j-1 +- Change subpackage names to git- instead of git-core- +- Create empty root package which brings in all subpackages +- Rename git-tk -> gitk + +* Thu Nov 10 2005 Chris Wright 0.99.9g-1 +- zlib dependency fix +- Minor cleanups from split +- Move arch import to separate package as well + +* Tue Sep 27 2005 Jim Radford +- Move programs with non-standard dependencies (svn, cvs, email) + into separate packages + +* Tue Sep 27 2005 H. Peter Anvin +- parallelize build +- COPTS -> CFLAGS + +* Fri Sep 16 2005 Chris Wright 0.99.6-1 +- update to 0.99.6 + +* Fri Sep 16 2005 Horst H. von Brand +- Linus noticed that less is required, added to the dependencies + +* Sun Sep 11 2005 Horst H. von Brand +- Updated dependencies +- Don't assume manpages are gzipped + +* Thu Aug 18 2005 Chris Wright 0.99.4-4 +- drop sh_utils, sh-utils, diffutils, mktemp, and openssl Requires +- use RPM_OPT_FLAGS in spec file, drop patch0 + +* Wed Aug 17 2005 Tom "spot" Callaway 0.99.4-3 +- use dist tag to differentiate between branches +- use rpm optflags by default (patch0) +- own %%{_datadir}/git-core/ + +* Mon Aug 15 2005 Chris Wright +- update spec file to fix Buildroot, Requires, and drop Vendor + +* Sun Aug 07 2005 Horst H. von Brand +- Redid the description +- Cut overlong make line, loosened changelog a bit +- I think Junio (or perhaps OSDL?) should be vendor... + +* Thu Jul 14 2005 Eric Biederman +- Add the man pages, and the --without docs build option + +* Thu Jul 7 2005 Chris Wright +- initial git spec file diff --git a/git.xinetd.in b/git.xinetd.in index d4ca95d..540e070 100644 --- a/git.xinetd.in +++ b/git.xinetd.in @@ -8,7 +8,7 @@ service git socket_type = stream wait = no user = nobody - server = @GITEXECDIR@/git-daemon + server = @GITCOREDIR@/git-daemon server_args = --base-path=@BASE_PATH@ --export-all --user-path=public_git --syslog --inetd --verbose log_on_failure += USERID } diff --git a/git@.service.in b/git@.service.in deleted file mode 100644 index 7abcfeb..0000000 --- a/git@.service.in +++ /dev/null @@ -1,10 +0,0 @@ -[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/gpgkey-junio.asc b/gpgkey-junio.asc deleted file mode 100644 index 5edb58f..0000000 --- a/gpgkey-junio.asc +++ /dev/null @@ -1,144 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=7hTI ------END PGP PUBLIC KEY BLOCK----- diff --git a/print-failed-test-output b/print-failed-test-output deleted file mode 100644 index 4e65662..0000000 --- a/print-failed-test-output +++ /dev/null @@ -1,26 +0,0 @@ -#!/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 - -# 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 diff --git a/sources b/sources index 4a04f56..19edaf6 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ -SHA512 (git-2.52.0.tar.xz) = 965e5ebb72d1f080d64e34bdb75f0bb1689c9dd41dcf63b020d986bad49808ac09bfb1115962bc0c5b95bac8622367ac4cd09aa89266f73d2137fe94c90dd3ed -SHA512 (git-2.52.0.tar.sign) = a5a68ce131a5763650c477ec01a4de958dd6a946bdea0f613e26bdab41d2df6b3ca63f9028bbe603bf0c834bd415c86e6c616b1ff08cc48aa7c3c61a37b24b74 +c529f6d4f1bf01fb919cb576c0dd58ae git-1.8.2.3.tar.xz +c4e9d1c84880ae60dcc32e140cfba2d2 git-htmldocs-1.8.2.3.tar.gz +891481ec6ecd9ee530701378e5b61d3f git-manpages-1.8.2.3.tar.gz