diff options
author | Todd Zullinger <tmz@pobox.com> | 2022-01-02 02:29:55 -0500 |
---|---|---|
committer | Todd Zullinger <tmz@pobox.com> | 2022-01-02 02:29:55 -0500 |
commit | 71cf80b187104679d4697c8e2816d6306d9ee4b7 (patch) | |
tree | 768f89cc1774f9024200fbd8f01cec783892d2a6 | |
parent | eaae61b1ac75b277661a489be572be4d20f36e9c (diff) | |
parent | fab9d3f6e2bc0ae87133af4f5b75852c638342a4 (diff) | |
download | cgit_EL6-71cf80b187104679d4697c8e2816d6306d9ee4b7.tar.gz |
Merge branch 'rawhide' into epel7
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | 0001-clone-fix-directory-traversal.patch | 62 | ||||
-rw-r--r-- | 0001-t0107-support-older-and-or-non-GNU-tar.patch | 77 | ||||
-rw-r--r-- | 0001-use-highlight-3-by-default.patch | 28 | ||||
-rw-r--r-- | README-SELinux.md | 29 | ||||
-rw-r--r-- | README.SELinux | 21 | ||||
-rw-r--r-- | cgit-0.9.1-highlightv3.patch | 13 | ||||
-rw-r--r-- | cgit-1.2.3-update-to-git-2.34.1.patch | 1003 | ||||
-rw-r--r-- | cgit.spec | 299 | ||||
-rw-r--r-- | cgitrc | 69 | ||||
-rw-r--r-- | gpgkey-96E07AF25771955980DAD10020D04E5A713660A7.asc | 144 | ||||
-rw-r--r-- | gpgkey-AB9942E6D4A4CFC3412620A749FC7012A5DE03AE.asc | 446 | ||||
-rw-r--r-- | sources | 6 |
13 files changed, 2021 insertions, 181 deletions
@@ -1,7 +1,8 @@ *~ *.rpm -*.tar.gz +*.tar.asc +*.tar.sign *.tar.xz -/.build*.log /cgit-*/ +/gpgkey-*.gpg /results_cgit/ diff --git a/0001-clone-fix-directory-traversal.patch b/0001-clone-fix-directory-traversal.patch deleted file mode 100644 index 9f647f2..0000000 --- a/0001-clone-fix-directory-traversal.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 53efaf30b50f095cad8c160488c74bba3e3b2680 Mon Sep 17 00:00:00 2001 -From: "Jason A. Donenfeld" <Jason@zx2c4.com> -Date: Fri, 3 Aug 2018 15:46:11 +0200 -Subject: [PATCH] clone: fix directory traversal - -This was introduced in the initial version of this code, way back when -in 2008. - -$ curl http://127.0.0.1/cgit/repo/objects/?path=../../../../../../../../../etc/passwd -root:x:0:0:root:/root:/bin/sh -... - -Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> -Reported-by: Jann Horn <jannh@google.com> ---- - ui-clone.c | 23 +++++++++++++++++++---- - 1 file changed, 19 insertions(+), 4 deletions(-) - -diff --git a/ui-clone.c b/ui-clone.c -index 2c1ac3d..6ba8f36 100644 ---- a/ui-clone.c -+++ b/ui-clone.c -@@ -92,17 +92,32 @@ void cgit_clone_info(void) - - void cgit_clone_objects(void) - { -- if (!ctx.qry.path) { -- cgit_print_error_page(400, "Bad request", "Bad request"); -- return; -- } -+ char *p; -+ -+ if (!ctx.qry.path) -+ goto err; - - if (!strcmp(ctx.qry.path, "info/packs")) { - print_pack_info(); - return; - } - -+ /* Avoid directory traversal by forbidding "..", but also work around -+ * other funny business by just specifying a fairly strict format. For -+ * example, now we don't have to stress out about the Cygwin port. -+ */ -+ for (p = ctx.qry.path; *p; ++p) { -+ if (*p == '.' && *(p + 1) == '.') -+ goto err; -+ if (!isalnum(*p) && *p != '/' && *p != '.' && *p != '-') -+ goto err; -+ } -+ - send_file(git_path("objects/%s", ctx.qry.path)); -+ return; -+ -+err: -+ cgit_print_error_page(400, "Bad request", "Bad request"); - } - - void cgit_clone_head(void) --- -2.18.0 - diff --git a/0001-t0107-support-older-and-or-non-GNU-tar.patch b/0001-t0107-support-older-and-or-non-GNU-tar.patch new file mode 100644 index 0000000..5a03859 --- /dev/null +++ b/0001-t0107-support-older-and-or-non-GNU-tar.patch @@ -0,0 +1,77 @@ +From bd6f5683f6cde4212364354b3139c1d521f40f39 Mon Sep 17 00:00:00 2001 +From: Todd Zullinger <tmz@pobox.com> +Date: Tue, 29 Dec 2020 14:18:01 -0500 +Subject: tests: t0107: support older and/or non-GNU tar +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The untar tests for various compression algorithms use shortcut options +from GNU tar to handle decompression. These options may not be provided +by non-GNU tar nor even by slightly older GNU tar versions which ship on +many systems. + +An example of the latter case is the --zstd option. This was added in +GNU tar-1.32 (2019-02-23)¹. This version of tar is not provided by +CentOS/RHEL, in particular. In Debian, --zstd has been backported to +the tar-1.30 release. + +Avoid the requirement on any specific implementations or versions of tar +by piping decompressed output to tar. This is compatible with older GNU +tar releases as well as tar implementations from other vendors. (It may +also be a slight benefit that this more closely matches what the +snapshot creation code does.) + +¹ Technically, the --zstd option was first released in tar-1.31 + (2019-01-02), but this release was very short-lived and is no longer + listed on the GNU Tar release page. + +Signed-off-by: Todd Zullinger <tmz@pobox.com> +Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> +--- + tests/t0107-snapshot.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tests/t0107-snapshot.sh b/tests/t0107-snapshot.sh +index 89b9159..0811ec4 100755 +--- a/tests/t0107-snapshot.sh ++++ b/tests/t0107-snapshot.sh +@@ -25,7 +25,7 @@ test_expect_success 'verify gzip format' ' + + test_expect_success 'untar' ' + rm -rf master && +- tar -xzf master.tar.gz ++ gzip -dc master.tar.gz | tar -xf - + ' + + test_expect_success 'count files' ' +@@ -66,7 +66,7 @@ test_expect_success LZIP 'verify lzip format' ' + + test_expect_success LZIP 'untar' ' + rm -rf master && +- tar --lzip -xf master.tar.lz ++ lzip -dc master.tar.lz | tar -xf - + ' + + test_expect_success LZIP 'count files' ' +@@ -107,7 +107,7 @@ test_expect_success XZ 'verify xz format' ' + + test_expect_success XZ 'untar' ' + rm -rf master && +- tar --xz -xf master.tar.xz ++ xz -dc master.tar.xz | tar -xf - + ' + + test_expect_success XZ 'count files' ' +@@ -148,7 +148,7 @@ test_expect_success ZSTD 'verify zstd format' ' + + test_expect_success ZSTD 'untar' ' + rm -rf master && +- tar --zstd -xf master.tar.zst ++ zstd -dc master.tar.zst | tar -xf - + ' + + test_expect_success ZSTD 'count files' ' +-- +cgit v1.2.3-11-g984f + diff --git a/0001-use-highlight-3-by-default.patch b/0001-use-highlight-3-by-default.patch new file mode 100644 index 0000000..4263113 --- /dev/null +++ b/0001-use-highlight-3-by-default.patch @@ -0,0 +1,28 @@ +From fc155711420fd305e5b6570b61ef605a99ba30c7 Mon Sep 17 00:00:00 2001 +From: Kevin Fenzi <kevin@scrye.com> +Date: Sat, 17 Nov 2012 10:53:33 -0700 +Subject: [PATCH] use highlight-3 by default + +All Fedora and EL releases have highlight-3.x except for EL-5. Make it +the default. +--- + filters/syntax-highlighting.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/filters/syntax-highlighting.sh b/filters/syntax-highlighting.sh +index 840bc34..5033f58 100755 +--- a/filters/syntax-highlighting.sh ++++ b/filters/syntax-highlighting.sh +@@ -115,7 +115,7 @@ EXTENSION="${BASENAME##*.}" + # found (for example) on EPEL 6. + # + # This is for version 2 +-exec highlight --force -f -I -X -S "$EXTENSION" 2>/dev/null ++#exec highlight --force -f -I -X -S "$EXTENSION" 2>/dev/null + + # This is for version 3 +-#exec highlight --force -f -I -O xhtml -S "$EXTENSION" 2>/dev/null ++exec highlight --force -f -I -O xhtml -S "$EXTENSION" 2>/dev/null +-- +2.32.0 + diff --git a/README-SELinux.md b/README-SELinux.md new file mode 100644 index 0000000..32ce880 --- /dev/null +++ b/README-SELinux.md @@ -0,0 +1,29 @@ +If your system has SELinux enabled, you must enable the `httpd_enable_cgi` +boolean: + + # setsebool -P httpd_enable_cgi 1 + +Additionally, the git repositories need to be accessible to cgit. This is +handled automatically for repositories in the default path, `/var/lib/git`. + +If you have created `/var/lib/git` manually or have existing content in that +directory, you may need to run `restorecon` to reset the SELinux context: + + # restorecon -RF /var/lib/git + +If your repositories are in a different path, `/srv/git`, for example, you can +set the proper context using `semanage`: + + # semanage fcontext -a -e /var/lib/git /srv/git + +This sets the context of `/srv/git` equal to the default context of +`/var/lib/git`. + +If you have other confined daemons that need to access the git repositories, +you may want to use `public_content_t` or `public_content_rw_t` instead: + + # semanage fcontext -a -t public_content_t "/srv/git(/.*)?" + +Then use `restorecon` to update the contexts: + + # restorecon -RF /srv/git diff --git a/README.SELinux b/README.SELinux deleted file mode 100644 index 1f63c62..0000000 --- a/README.SELinux +++ /dev/null @@ -1,21 +0,0 @@ -If you use SELinux, you need to ensure that the httpd_enable_cgi boolean is -set properly. This can be done via the command line, e.g.: - - # setsebool -P httpd_enable_cgi 1 - -Or you can use the graphical tool system-config-selinux, via System -> -Administration -> SELinux Management on the Gnome menu. - -Additionally, the git repositories need to be readable by the cgi. This is -handled automatically for repositories in the default path, /var/lib/git. If -your repositories are in a different path, /srv/git, for example, you can set -the proper context using semanage: - - # semanage fcontext -a -t @CGIT_CONTEXT@ "/srv/git(/.*)?" - -If you have other confined daemons that need to access the git repositories, -you may want to use public_content_t, or public_content_rw_t instead. - -Then use restorecon to update the contexts: - - # restorecon -RF /srv/git diff --git a/cgit-0.9.1-highlightv3.patch b/cgit-0.9.1-highlightv3.patch deleted file mode 100644 index df06a81..0000000 --- a/cgit-0.9.1-highlightv3.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -Nur cgit-0.9.1.orig/filters/syntax-highlighting.sh cgit-0.9.1/filters/syntax-highlighting.sh ---- cgit-0.9.1.orig/filters/syntax-highlighting.sh 2012-11-14 17:28:59.000000000 -0700 -+++ cgit-0.9.1/filters/syntax-highlighting.sh 2012-11-17 10:47:07.870778180 -0700 -@@ -53,7 +53,7 @@ - # found (for example) on EPEL 6. - # - # This is for version 2 --exec highlight --force -f -I -X -S "$EXTENSION" 2>/dev/null -+#exec highlight --force -f -I -X -S "$EXTENSION" 2>/dev/null - - # This is for version 3 --#exec highlight --force -f -I -O xhtml -S "$EXTENSION" 2>/dev/null -+exec highlight --force -f -I -O xhtml -S "$EXTENSION" 2>/dev/null diff --git a/cgit-1.2.3-update-to-git-2.34.1.patch b/cgit-1.2.3-update-to-git-2.34.1.patch new file mode 100644 index 0000000..3e47d41 --- /dev/null +++ b/cgit-1.2.3-update-to-git-2.34.1.patch @@ -0,0 +1,1003 @@ +From 0462f08d8508978256118769b3e6dc89773a1367 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Mon, 9 Mar 2020 09:51:05 +0100 +Subject: [PATCH] git: update to v2.26.0 + +Update to git version v2.26.0. + +No changes required. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 49109ad..b50159f 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.25.1 ++GIT_VER = 2.26.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +From f780396c0afa6015a05025c6404a560252605319 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Tue, 2 Jun 2020 10:10:15 +0200 +Subject: [PATCH] git: update to v2.27.0 + +Update to git version v2.27.0. + +No changes required. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index b50159f..5c8fa8c 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.26.0 ++GIT_VER = 2.27.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +From 205837d4684f331afa93c946cbdfa1fa9b3d1ce9 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Mon, 27 Jul 2020 20:36:14 +0200 +Subject: [PATCH] git: update to v2.28.0 + +Update to git version v2.28.0. + +No changes required. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 5c8fa8c..84822f0 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.27.0 ++GIT_VER = 2.28.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +From 629659d2cffbf059374fc53e6400ff0bebe1ddde Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Tue, 6 Oct 2020 16:32:08 +0200 +Subject: [PATCH] git: update to v2.29.0 + +Update to git version v2.29.0, this requires changes for these +upstream commits: + +* dbbcd44fb47347a3fdbee88ea21805b7f4ac0b98 + strvec: rename files from argv-array to strvec + +* 873cd28a8b17ff21908c78c7929a7615f8c94992 + argv-array: rename to strvec + +* d70a9eb611a9d242c1d26847d223b8677609305b + strvec: rename struct fields + +* 6a67c759489e1025665adf78326e9e0d0981bab5 + test-lib-functions: restrict test_must_fail usage + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + cgit.h | 2 +- + tests/t0109-gitconfig.sh | 2 +- + ui-blame.c | 10 +++++----- + ui-log.c | 30 +++++++++++++++--------------- + ui-snapshot.c | 24 ++++++++++++------------ + 6 files changed, 35 insertions(+), 35 deletions(-) + +diff --git a/Makefile b/Makefile +index 84822f0..c947b63 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.28.0 ++GIT_VER = 2.29.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +diff --git a/cgit.h b/cgit.h +index 7ec46b4..f5db364 100644 +--- a/cgit.h ++++ b/cgit.h +@@ -14,7 +14,7 @@ + #include <tag.h> + #include <diff.h> + #include <diffcore.h> +-#include <argv-array.h> ++#include <strvec.h> + #include <refs.h> + #include <revision.h> + #include <log-tree.h> +diff --git a/tests/t0109-gitconfig.sh b/tests/t0109-gitconfig.sh +index 8cee75c..189ef28 100755 +--- a/tests/t0109-gitconfig.sh ++++ b/tests/t0109-gitconfig.sh +@@ -25,7 +25,7 @@ test_no_home_access () { + -E CGIT_CONFIG="$PWD/cgitrc" \ + -E QUERY_STRING="url=$1" \ + -e access -f -o strace.out cgit && +- test_must_fail grep "$non_existent_path" strace.out ++ ! grep "$non_existent_path" strace.out + } + + test_no_home_access_success() { +diff --git a/ui-blame.c b/ui-blame.c +index f28eea0..c3662bb 100644 +--- a/ui-blame.c ++++ b/ui-blame.c +@@ -10,7 +10,7 @@ + #include "ui-blame.h" + #include "html.h" + #include "ui-shared.h" +-#include "argv-array.h" ++#include "strvec.h" + #include "blame.h" + + +@@ -104,7 +104,7 @@ static void print_object(const struct object_id *oid, const char *path, + enum object_type type; + char *buf; + unsigned long size; +- struct argv_array rev_argv = ARGV_ARRAY_INIT; ++ struct strvec rev_argv = STRVEC_INIT; + struct rev_info revs; + struct blame_scoreboard sb; + struct blame_origin *o; +@@ -124,11 +124,11 @@ static void print_object(const struct object_id *oid, const char *path, + return; + } + +- argv_array_push(&rev_argv, "blame"); +- argv_array_push(&rev_argv, rev); ++ strvec_push(&rev_argv, "blame"); ++ strvec_push(&rev_argv, rev); + init_revisions(&revs, NULL); + revs.diffopt.flags.allow_textconv = 1; +- setup_revisions(rev_argv.argc, rev_argv.argv, &revs, NULL); ++ setup_revisions(rev_argv.nr, rev_argv.v, &revs, NULL); + init_scoreboard(&sb); + sb.revs = &revs; + sb.repo = the_repository; +diff --git a/ui-log.c b/ui-log.c +index 2939c01..fd07409 100644 +--- a/ui-log.c ++++ b/ui-log.c +@@ -10,7 +10,7 @@ + #include "ui-log.h" + #include "html.h" + #include "ui-shared.h" +-#include "argv-array.h" ++#include "strvec.h" + + static int files, add_lines, rem_lines, lines_counted; + +@@ -366,23 +366,23 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern + { + struct rev_info rev; + struct commit *commit; +- struct argv_array rev_argv = ARGV_ARRAY_INIT; ++ struct strvec rev_argv = STRVEC_INIT; + int i, columns = commit_graph ? 4 : 3; + int must_free_tip = 0; + + /* rev_argv.argv[0] will be ignored by setup_revisions */ +- argv_array_push(&rev_argv, "log_rev_setup"); ++ strvec_push(&rev_argv, "log_rev_setup"); + + if (!tip) + tip = ctx.qry.head; + tip = disambiguate_ref(tip, &must_free_tip); +- argv_array_push(&rev_argv, tip); ++ strvec_push(&rev_argv, tip); + + if (grep && pattern && *pattern) { + pattern = xstrdup(pattern); + if (!strcmp(grep, "grep") || !strcmp(grep, "author") || + !strcmp(grep, "committer")) { +- argv_array_pushf(&rev_argv, "--%s=%s", grep, pattern); ++ strvec_pushf(&rev_argv, "--%s=%s", grep, pattern); + } else if (!strcmp(grep, "range")) { + char *arg; + /* Split the pattern at whitespace and add each token +@@ -390,14 +390,14 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern + * rev-list options. Also, replace the previously + * pushed tip (it's no longer relevant). + */ +- argv_array_pop(&rev_argv); ++ strvec_pop(&rev_argv); + while ((arg = next_token(&pattern))) { + if (*arg == '-') { + fprintf(stderr, "Bad range expr: %s\n", + arg); + break; + } +- argv_array_push(&rev_argv, arg); ++ strvec_push(&rev_argv, arg); + } + } + } +@@ -412,22 +412,22 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern + } + + if (commit_graph && !ctx.qry.follow) { +- argv_array_push(&rev_argv, "--graph"); +- argv_array_push(&rev_argv, "--color"); ++ strvec_push(&rev_argv, "--graph"); ++ strvec_push(&rev_argv, "--color"); + graph_set_column_colors(column_colors_html, + COLUMN_COLORS_HTML_MAX); + } + + if (commit_sort == 1) +- argv_array_push(&rev_argv, "--date-order"); ++ strvec_push(&rev_argv, "--date-order"); + else if (commit_sort == 2) +- argv_array_push(&rev_argv, "--topo-order"); ++ strvec_push(&rev_argv, "--topo-order"); + + if (path && ctx.qry.follow) +- argv_array_push(&rev_argv, "--follow"); +- argv_array_push(&rev_argv, "--"); ++ strvec_push(&rev_argv, "--follow"); ++ strvec_push(&rev_argv, "--"); + if (path) +- argv_array_push(&rev_argv, path); ++ strvec_push(&rev_argv, path); + + init_revisions(&rev, NULL); + rev.abbrev = DEFAULT_ABBREV; +@@ -436,7 +436,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern + rev.show_root_diff = 0; + rev.ignore_missing = 1; + rev.simplify_history = 1; +- setup_revisions(rev_argv.argc, rev_argv.argv, &rev, NULL); ++ setup_revisions(rev_argv.nr, rev_argv.v, &rev, NULL); + load_ref_decorations(NULL, DECORATE_FULL_REFS); + rev.show_decorations = 1; + rev.grep_filter.ignore_case = 1; +diff --git a/ui-snapshot.c b/ui-snapshot.c +index 556d3ed..18361a6 100644 +--- a/ui-snapshot.c ++++ b/ui-snapshot.c +@@ -13,32 +13,32 @@ + + static int write_archive_type(const char *format, const char *hex, const char *prefix) + { +- struct argv_array argv = ARGV_ARRAY_INIT; ++ struct strvec argv = STRVEC_INIT; + const char **nargv; + int result; +- argv_array_push(&argv, "snapshot"); +- argv_array_push(&argv, format); ++ strvec_push(&argv, "snapshot"); ++ strvec_push(&argv, format); + if (prefix) { + struct strbuf buf = STRBUF_INIT; + strbuf_addstr(&buf, prefix); + strbuf_addch(&buf, '/'); +- argv_array_push(&argv, "--prefix"); +- argv_array_push(&argv, buf.buf); ++ strvec_push(&argv, "--prefix"); ++ strvec_push(&argv, buf.buf); + strbuf_release(&buf); + } +- argv_array_push(&argv, hex); ++ strvec_push(&argv, hex); + /* + * Now we need to copy the pointers to arguments into a new + * structure because write_archive will rearrange its arguments + * which may result in duplicated/missing entries causing leaks +- * or double-frees in argv_array_clear. ++ * or double-frees in strvec_clear. + */ +- nargv = xmalloc(sizeof(char *) * (argv.argc + 1)); +- /* argv_array guarantees a trailing NULL entry. */ +- memcpy(nargv, argv.argv, sizeof(char *) * (argv.argc + 1)); ++ nargv = xmalloc(sizeof(char *) * (argv.nr + 1)); ++ /* strvec guarantees a trailing NULL entry. */ ++ memcpy(nargv, argv.v, sizeof(char *) * (argv.nr + 1)); + +- result = write_archive(argv.argc, nargv, NULL, the_repository, NULL, 0); +- argv_array_clear(&argv); ++ result = write_archive(argv.nr, nargv, NULL, the_repository, NULL, 0); ++ strvec_clear(&argv); + free(nargv); + return result; + } +From fe99c76ee477f91d6d983486491603109c7b2599 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Tue, 27 Oct 2020 10:39:46 +0100 +Subject: [PATCH] git: update to v2.29.1 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Update to git version v2.29.1. No functional change, but we want latest +and greated version number, no? 😜 + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index c947b63..eb60388 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.29.0 ++GIT_VER = 2.29.1 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +From b1739247b17524460282f63fa240b3f34501e000 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Fri, 30 Oct 2020 22:22:32 +0100 +Subject: [PATCH] git: update to v2.29.2 + +Update to git version v2.29.2. + +No changes required. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index eb60388..1a8f496 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.29.1 ++GIT_VER = 2.29.2 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +From cef27b670a66c9840bb6120260864e4b3a701dc2 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Mon, 28 Dec 2020 23:27:13 +0100 +Subject: [PATCH] git: update to v2.30.0 + +Update to git version v2.30.0, this requires changes for these +upstream commits: + +* 88894aaeeae92e8cb41143cc2e045f50289dc790 + blame: simplify 'setup_scoreboard' interface + +* 1fbfdf556f2abc708183caca53ae4e2881b46ae2 + banned.h: mark non-reentrant gmtime, etc as banned + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + cache.c | 6 +++--- + ui-blame.c | 3 ++- + ui-shared.c | 9 +++++---- + ui-stats.c | 48 ++++++++++++++++++++++++------------------------ + 5 files changed, 35 insertions(+), 33 deletions(-) + +diff --git a/Makefile b/Makefile +index 1a8f496..6dfc003 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.29.2 ++GIT_VER = 2.30.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +diff --git a/cache.c b/cache.c +index 2c70be7..55199e8 100644 +--- a/cache.c ++++ b/cache.c +@@ -401,12 +401,12 @@ int cache_process(int size, const char *path, const char *key, int ttl, + static char *sprintftime(const char *format, time_t time) + { + static char buf[64]; +- struct tm *tm; ++ struct tm tm; + + if (!time) + return NULL; +- tm = gmtime(&time); +- strftime(buf, sizeof(buf)-1, format, tm); ++ gmtime_r(&time, &tm); ++ strftime(buf, sizeof(buf)-1, format, &tm); + return buf; + } + +diff --git a/ui-blame.c b/ui-blame.c +index cfab7fb..ec1d888 100644 +--- a/ui-blame.c ++++ b/ui-blame.c +@@ -132,7 +132,8 @@ static void print_object(const struct object_id *oid, const char *path, + init_scoreboard(&sb); + sb.revs = &revs; + sb.repo = the_repository; +- setup_scoreboard(&sb, path, &o); ++ sb.path = path; ++ setup_scoreboard(&sb, &o); + o->suspects = blame_entry_prepend(NULL, 0, sb.num_lines, o); + prio_queue_put(&sb.commits, o->commit); + blame_origin_decref(o); +diff --git a/ui-shared.c b/ui-shared.c +index 151ac17..acd8ab5 100644 +--- a/ui-shared.c ++++ b/ui-shared.c +@@ -22,10 +22,11 @@ static char *http_date(time_t t) + static char month[][4] = + {"Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; +- struct tm *tm = gmtime(&t); +- return fmt("%s, %02d %s %04d %02d:%02d:%02d GMT", day[tm->tm_wday], +- tm->tm_mday, month[tm->tm_mon], 1900 + tm->tm_year, +- tm->tm_hour, tm->tm_min, tm->tm_sec); ++ struct tm tm; ++ gmtime_r(&t, &tm); ++ return fmt("%s, %02d %s %04d %02d:%02d:%02d GMT", day[tm.tm_wday], ++ tm.tm_mday, month[tm.tm_mon], 1900 + tm.tm_year, ++ tm.tm_hour, tm.tm_min, tm.tm_sec); + } + + void cgit_print_error(const char *fmt, ...) +diff --git a/ui-stats.c b/ui-stats.c +index 7272a61..09b3625 100644 +--- a/ui-stats.c ++++ b/ui-stats.c +@@ -166,7 +166,7 @@ static void add_commit(struct string_list *authors, struct commit *commit, + struct authorstat *authorstat; + struct string_list *items; + char *tmp; +- struct tm *date; ++ struct tm date; + time_t t; + uintptr_t *counter; + +@@ -180,9 +180,9 @@ static void add_commit(struct string_list *authors, struct commit *commit, + authorstat = author->util; + items = &authorstat->list; + t = info->committer_date; +- date = gmtime(&t); +- period->trunc(date); +- tmp = xstrdup(period->pretty(date)); ++ gmtime_r(&t, &date); ++ period->trunc(&date); ++ tmp = xstrdup(period->pretty(&date)); + item = string_list_insert(items, tmp); + counter = (uintptr_t *)&item->util; + if (*counter) +@@ -215,15 +215,15 @@ static struct string_list collect_stats(const struct cgit_period *period) + int argc = 3; + time_t now; + long i; +- struct tm *tm; ++ struct tm tm; + char tmp[11]; + + time(&now); +- tm = gmtime(&now); +- period->trunc(tm); ++ gmtime_r(&now, &tm); ++ period->trunc(&tm); + for (i = 1; i < period->count; i++) +- period->dec(tm); +- strftime(tmp, sizeof(tmp), "%Y-%m-%d", tm); ++ period->dec(&tm); ++ strftime(tmp, sizeof(tmp), "%Y-%m-%d", &tm); + argv[2] = xstrdup(fmt("--since=%s", tmp)); + if (ctx.qry.path) { + argv[3] = "--"; +@@ -261,21 +261,21 @@ static void print_combined_authorrow(struct string_list *authors, int from, + struct string_list_item *date; + time_t now; + long i, j, total, subtotal; +- struct tm *tm; ++ struct tm tm; + char *tmp; + + time(&now); +- tm = gmtime(&now); +- period->trunc(tm); ++ gmtime_r(&now, &tm); ++ period->trunc(&tm); + for (i = 1; i < period->count; i++) +- period->dec(tm); ++ period->dec(&tm); + + total = 0; + htmlf("<tr><td class='%s'>%s</td>", leftclass, + fmt(name, to - from + 1)); + for (j = 0; j < period->count; j++) { +- tmp = period->pretty(tm); +- period->inc(tm); ++ tmp = period->pretty(&tm); ++ period->inc(&tm); + subtotal = 0; + for (i = from; i <= to; i++) { + author = &authors->items[i]; +@@ -300,20 +300,20 @@ static void print_authors(struct string_list *authors, int top, + struct string_list_item *date; + time_t now; + long i, j, total; +- struct tm *tm; ++ struct tm tm; + char *tmp; + + time(&now); +- tm = gmtime(&now); +- period->trunc(tm); ++ gmtime_r(&now, &tm); ++ period->trunc(&tm); + for (i = 1; i < period->count; i++) +- period->dec(tm); ++ period->dec(&tm); + + html("<table class='stats'><tr><th>Author</th>"); + for (j = 0; j < period->count; j++) { +- tmp = period->pretty(tm); ++ tmp = period->pretty(&tm); + htmlf("<th>%s</th>", tmp); +- period->inc(tm); ++ period->inc(&tm); + } + html("<th>Total</th></tr>\n"); + +@@ -329,10 +329,10 @@ static void print_authors(struct string_list *authors, int top, + items = &authorstat->list; + total = 0; + for (j = 0; j < period->count; j++) +- period->dec(tm); ++ period->dec(&tm); + for (j = 0; j < period->count; j++) { +- tmp = period->pretty(tm); +- period->inc(tm); ++ tmp = period->pretty(&tm); ++ period->inc(&tm); + date = string_list_lookup(items, tmp); + if (!date) + html("<td>0</td>"); +From 4ffadc1e0c589f9bcfb4a721f5625914ef2d496d Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Wed, 10 Feb 2021 16:13:53 +0100 +Subject: [PATCH] git: update to v2.30.1 + +Update to git version v2.30.1, no additional changes required. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 6dfc003..a4e597b 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.30.0 ++GIT_VER = 2.30.1 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +From d889cae811f27a052317ac5aea23890cba414760 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Mon, 15 Mar 2021 22:48:26 +0100 +Subject: [PATCH] git: update to v2.31.0 + +Update to git version v2.31.0, this requires changes for these +upstream commits: + +* 36a317929b8f0c67d77d54235f2d20751c576cbb + refs: switch peel_ref() to peel_iterated_oid() + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + ui-log.c | 7 ++++--- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index a4e597b..11b437b 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.30.1 ++GIT_VER = 2.31.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +diff --git a/ui-log.c b/ui-log.c +index 6914f75..20774bf 100644 +--- a/ui-log.c ++++ b/ui-log.c +@@ -65,8 +65,9 @@ void show_commit_decorations(struct commit *commit) + return; + html("<span class='decoration'>"); + while (deco) { +- struct object_id peeled; ++ struct object_id oid_tag, peeled; + int is_annotated = 0; ++ + strlcpy(buf, prettify_refname(deco->name), sizeof(buf)); + switch(deco->type) { + case DECORATION_NONE: +@@ -79,8 +80,8 @@ void show_commit_decorations(struct commit *commit) + ctx.qry.showmsg, 0); + break; + case DECORATION_REF_TAG: +- if (!peel_ref(deco->name, &peeled)) +- is_annotated = !oidcmp(&commit->object.oid, &peeled); ++ if (!read_ref(deco->name, &oid_tag) && !peel_iterated_oid(&oid_tag, &peeled)) ++ is_annotated = !oideq(&oid_tag, &peeled); + cgit_tag_link(buf, NULL, is_annotated ? "tag-annotated-deco" : "tag-deco", buf); + break; + case DECORATION_REF_REMOTE: +From 6dbbffe01533a91c79c4497c80f46af8e1581e25 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Tue, 18 May 2021 21:54:23 +0200 +Subject: [PATCH] git: update to v2.31.1 + +Update to git version v2.31.1, no additional changes required. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 11b437b..abc52bc 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.31.0 ++GIT_VER = 2.31.1 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +From 5258c297ba6fb604ae1415fbc19a3fe42457e49e Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Tue, 18 May 2021 22:49:13 +0200 +Subject: [PATCH] git: update to v2.32.0 + +Update to git version v2.32.0, this requires changes for these +upstream commits: + +* 47957485b3b731a7860e0554d2bd12c0dce1c75a + tree.h API: simplify read_tree_recursive() signature + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + ui-blame.c | 9 +++------ + ui-blob.c | 20 ++++++++------------ + ui-plain.c | 7 +++---- + ui-tree.c | 21 ++++++++------------- + 5 files changed, 23 insertions(+), 36 deletions(-) + +diff --git a/Makefile b/Makefile +index abc52bc..d13c5bd 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.31.1 ++GIT_VER = 2.32.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +diff --git a/ui-blame.c b/ui-blame.c +index ec1d888..03136f7 100644 +--- a/ui-blame.c ++++ b/ui-blame.c +@@ -221,8 +221,7 @@ cleanup: + } + + static int walk_tree(const struct object_id *oid, struct strbuf *base, +- const char *pathname, unsigned mode, int stage, +- void *cbdata) ++ const char *pathname, unsigned mode, void *cbdata) + { + struct walk_tree_context *walk_tree_ctx = cbdata; + +@@ -291,10 +290,8 @@ void cgit_print_blame(void) + walk_tree_ctx.match_baselen = (path_items.match) ? + basedir_len(path_items.match) : -1; + +- read_tree_recursive(the_repository, +- repo_get_commit_tree(the_repository, commit), +- "", 0, 0, +- &paths, walk_tree, &walk_tree_ctx); ++ read_tree(the_repository, repo_get_commit_tree(the_repository, commit), ++ &paths, walk_tree, &walk_tree_ctx); + if (!walk_tree_ctx.state) + cgit_print_error_page(404, "Not found", "Not found"); + else if (walk_tree_ctx.state == 2) +diff --git a/ui-blob.c b/ui-blob.c +index f76c641..c10ae42 100644 +--- a/ui-blob.c ++++ b/ui-blob.c +@@ -19,7 +19,7 @@ struct walk_tree_context { + }; + + static int walk_tree(const struct object_id *oid, struct strbuf *base, +- const char *pathname, unsigned mode, int stage, void *cbdata) ++ const char *pathname, unsigned mode, void *cbdata) + { + struct walk_tree_context *walk_tree_ctx = cbdata; + +@@ -56,9 +56,9 @@ int cgit_ref_path_exists(const char *path, const char *ref, int file_only) + goto done; + if (oid_object_info(the_repository, &oid, &size) != OBJ_COMMIT) + goto done; +- read_tree_recursive(the_repository, +- repo_get_commit_tree(the_repository, lookup_commit_reference(the_repository, &oid)), +- "", 0, 0, &paths, walk_tree, &walk_tree_ctx); ++ read_tree(the_repository, ++ repo_get_commit_tree(the_repository, lookup_commit_reference(the_repository, &oid)), ++ &paths, walk_tree, &walk_tree_ctx); + + done: + free(path_items.match); +@@ -92,10 +92,8 @@ int cgit_print_file(char *path, const char *head, int file_only) + type = oid_object_info(the_repository, &oid, &size); + if (type == OBJ_COMMIT) { + commit = lookup_commit_reference(the_repository, &oid); +- read_tree_recursive(the_repository, +- repo_get_commit_tree(the_repository, commit), +- "", 0, 0, &paths, walk_tree, +- &walk_tree_ctx); ++ read_tree(the_repository, repo_get_commit_tree(the_repository, commit), ++ &paths, walk_tree, &walk_tree_ctx); + if (!walk_tree_ctx.found_path) + return -1; + type = oid_object_info(the_repository, &oid, &size); +@@ -151,10 +149,8 @@ void cgit_print_blob(const char *hex, char *path, const char *head, int file_onl + + if ((!hex) && type == OBJ_COMMIT && path) { + commit = lookup_commit_reference(the_repository, &oid); +- read_tree_recursive(the_repository, +- repo_get_commit_tree(the_repository, commit), +- "", 0, 0, &paths, walk_tree, +- &walk_tree_ctx); ++ read_tree(the_repository, repo_get_commit_tree(the_repository, commit), ++ &paths, walk_tree, &walk_tree_ctx); + type = oid_object_info(the_repository, &oid, &size); + } + +diff --git a/ui-plain.c b/ui-plain.c +index 001001c..65a205f 100644 +--- a/ui-plain.c ++++ b/ui-plain.c +@@ -130,7 +130,7 @@ static void print_dir_tail(void) + } + + static int walk_tree(const struct object_id *oid, struct strbuf *base, +- const char *pathname, unsigned mode, int stage, void *cbdata) ++ const char *pathname, unsigned mode, void *cbdata) + { + struct walk_tree_context *walk_tree_ctx = cbdata; + +@@ -198,9 +198,8 @@ void cgit_print_plain(void) + } + else + walk_tree_ctx.match_baselen = basedir_len(path_items.match); +- read_tree_recursive(the_repository, +- repo_get_commit_tree(the_repository, commit), +- "", 0, 0, &paths, walk_tree, &walk_tree_ctx); ++ read_tree(the_repository, repo_get_commit_tree(the_repository, commit), ++ &paths, walk_tree, &walk_tree_ctx); + if (!walk_tree_ctx.match) + cgit_print_error_page(404, "Not found", "Not found"); + else if (walk_tree_ctx.match == 2) +diff --git a/ui-tree.c b/ui-tree.c +index 1e4efb2..b61f6f5 100644 +--- a/ui-tree.c ++++ b/ui-tree.c +@@ -139,8 +139,7 @@ struct single_tree_ctx { + }; + + static int single_tree_cb(const struct object_id *oid, struct strbuf *base, +- const char *pathname, unsigned mode, int stage, +- void *cbdata) ++ const char *pathname, unsigned mode, void *cbdata) + { + struct single_tree_ctx *ctx = cbdata; + +@@ -185,8 +184,7 @@ static void write_tree_link(const struct object_id *oid, char *name, + tree_ctx.name = NULL; + tree_ctx.count = 0; + +- read_tree_recursive(the_repository, tree, "", 0, 1, +- &paths, single_tree_cb, &tree_ctx); ++ read_tree(the_repository, tree, &paths, single_tree_cb, &tree_ctx); + + if (tree_ctx.count != 1) + break; +@@ -199,7 +197,7 @@ static void write_tree_link(const struct object_id *oid, char *name, + } + + static int ls_item(const struct object_id *oid, struct strbuf *base, +- const char *pathname, unsigned mode, int stage, void *cbdata) ++ const char *pathname, unsigned mode, void *cbdata) + { + struct walk_tree_context *walk_tree_ctx = cbdata; + char *name; +@@ -294,14 +292,13 @@ static void ls_tree(const struct object_id *oid, const char *path, struct walk_t + } + + ls_head(); +- read_tree_recursive(the_repository, tree, "", 0, 1, +- &paths, ls_item, walk_tree_ctx); ++ read_tree(the_repository, tree, &paths, ls_item, walk_tree_ctx); + ls_tail(); + } + + + static int walk_tree(const struct object_id *oid, struct strbuf *base, +- const char *pathname, unsigned mode, int stage, void *cbdata) ++ const char *pathname, unsigned mode, void *cbdata) + { + struct walk_tree_context *walk_tree_ctx = cbdata; + +@@ -326,7 +323,7 @@ static int walk_tree(const struct object_id *oid, struct strbuf *base, + return 0; + } + } +- ls_item(oid, base, pathname, mode, stage, walk_tree_ctx); ++ ls_item(oid, base, pathname, mode, walk_tree_ctx); + return 0; + } + +@@ -374,10 +371,8 @@ void cgit_print_tree(const char *rev, char *path) + goto cleanup; + } + +- read_tree_recursive(the_repository, +- repo_get_commit_tree(the_repository, commit), +- "", 0, 0, +- &paths, walk_tree, &walk_tree_ctx); ++ read_tree(the_repository, repo_get_commit_tree(the_repository, commit), ++ &paths, walk_tree, &walk_tree_ctx); + if (walk_tree_ctx.state == 1) + ls_tail(); + else if (walk_tree_ctx.state == 2) +From 45eff406554f3ff31bdf7d54daae1da5635db72e Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Sun, 8 Aug 2021 17:55:53 +0200 +Subject: [PATCH] git: update to v2.33.0 + +Update to git version v2.33.0, no additional changes required. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index d13c5bd..b030ff9 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.32.0 ++GIT_VER = 2.33.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +From b8f2b675df61e3a4ff4db7073fe7142fc07e8b7a Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Wed, 3 Nov 2021 15:32:17 +0100 +Subject: [PATCH] git: update to v2.34.0 + +Update to git version v2.34.0, this requires changes for these +upstream commits: + +* abf897bacd2d36b9dbd07c70b4a2f97a084704ee + string-list.[ch]: remove string_list_init() compatibility function + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + cgit.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index b030ff9..9153a39 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.33.0 ++GIT_VER = 2.34.0 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r +diff --git a/cgit.c b/cgit.c +index 08d81a1..4b2d86c 100644 +--- a/cgit.c ++++ b/cgit.c +@@ -428,7 +428,7 @@ static void prepare_context(void) + ctx.page.modified = time(NULL); + ctx.page.expires = ctx.page.modified; + ctx.page.etag = NULL; +- string_list_init(&ctx.cfg.mimetypes, 1); ++ string_list_init_dup(&ctx.cfg.mimetypes); + if (ctx.env.script_name) + ctx.cfg.script_name = xstrdup(ctx.env.script_name); + if (ctx.env.query_string) +From 11be5b8182fc71c00c1c00c693f64c97769d77bb Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Wed, 24 Nov 2021 21:12:12 +0100 +Subject: [PATCH] git: update to v2.34.1 + +Update to git version v2.34.1, no additional changes required. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 9153a39..baa7c2d 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,7 +14,7 @@ htmldir = $(docdir) + pdfdir = $(docdir) + mandir = $(prefix)/share/man + SHA1_HEADER = <openssl/sha.h> +-GIT_VER = 2.34.0 ++GIT_VER = 2.34.1 + GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz + INSTALL = install + COPYTREE = cp -r @@ -1,58 +1,125 @@ # Review bug: https://bugzilla.redhat.com/479723 -%global gitver 2.10.2 +# Defaults +%global gitver 2.34.1 %global cachedir %{_localstatedir}/cache/%{name} %global filterdir %{_libexecdir}/%{name}/filters %global scriptdir %{_localstatedir}/www/cgi-bin %global cgitdata %{_datadir}/%{name} +%global httpdconfd %{_sysconfdir}/httpd/conf.d +%global gitrepodir %{_localstatedir}/lib/git -%global syntax_highlight 1 +# GPG signing key fingerprints +%global gpg_cgit AB9942E6D4A4CFC3412620A749FC7012A5DE03AE +%global gpg_git 96E07AF25771955980DAD10020D04E5A713660A7 -# Temporarily -- in epel-7-ppc64 is not highlight package currently, #1117261 -%if 0%{?rhel} == 7 -%ifarch ppc64 -%global syntax_highlight 0 +# Settings for Fedora and EL >= 8 +%if 0%{?fedora} || 0%{?rhel} >= 8 +%bcond_without httpd_filesystem +%global use_perl_interpreter 1 +%else +%bcond_with httpd_filesystem +%global use_perl_interpreter 0 %endif + +# The highlight package is only available in EL7+ on ppc64le and x86_64 +%if 0%{?rhel} >= 7 && ! ( "%{_arch}" == "ppc64le" || "%{_arch}" == "x86_64" ) +%bcond_with highlight +%else +%bcond_without highlight %endif Name: cgit -Version: 1.1 -Release: 11%{?dist} +Version: 1.2.3 +Release: 8%{?dist} Summary: A fast web interface for git -Group: Development/Tools License: GPLv2 URL: https://git.zx2c4.com/cgit/ Source0: https://git.zx2c4.com/cgit/snapshot/%{name}-%{version}.tar.xz -Source1: https://www.kernel.org/pub/software/scm/git//git-%{gitver}.tar.xz +Source1: https://www.kernel.org/pub/software/scm/git/git-%{gitver}.tar.xz Source2: cgitrc -Source3: README.SELinux - -# https://git.zx2c4.com/cgit/commit/?id=53efaf30b -Patch0: 0001-clone-fix-directory-traversal.patch - -# Security guys might try to repoquery for this. +Source3: README-SELinux.md + +# Jason A. Donenfeld's key is used to sign cgit releases. +# https://www.zx2c4.com/keys/AB9942E6D4A4CFC3412620A749FC7012A5DE03AE.asc +Source90: gpgkey-%{gpg_cgit}.asc + +# 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 +# https://src.fedoraproject.org/rpms/git/raw/master/f/gpgkey-junio.asc +Source91: gpgkey-%{gpg_git}.asc + +# Tarball signatures +Source92: https://git.zx2c4.com/cgit/snapshot/%{name}-%{version}.tar.asc +Source93: https://www.kernel.org/pub/software/scm/git/git-%{gitver}.tar.sign + +# All supported releases use highlight version 3. +Patch0: 0001-use-highlight-3-by-default.patch + +# Improve test suite's support for older tar versions +# https://lists.zx2c4.com/pipermail/cgit/2020-August/004513.html +Patch1: https://git.zx2c4.com/cgit/patch/?id=bd6f5683f#/0001-t0107-support-older-and-or-non-GNU-tar.patch + +# Update to current git +# +# This is a compilation of patches Christian Hesse has sent to the cgit list. +# It was created somewhat manually by reviewing the number of patches since the +# last update to git-2.25.1 (14). Then patch was generated via: +# +# git log --grep=git: --format='%h' --reverse -14 origin/ch/for-jason | +# while read c _; do +# git format-patch -1 --ignore-submodules --no-signature --stdout $c +# done >~/src/dist/fedora/cgit/cgit-1.2.3-update-to-git-2.34.1.patch +Patch2: cgit-1.2.3-update-to-git-2.34.1.patch + +# Note the bundled git, per the packaging guidelines +# https://docs.fedoraproject.org/en-US/packaging-guidelines/#bundling Provides: bundled(git) = %gitver -%if %{syntax_highlight} -# All supported releases use hightlight version 3. -Patch1: cgit-0.9.1-highlightv3.patch +%if %{with highlight} BuildRequires: highlight %endif BuildRequires: asciidoc +%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 BuildRequires: gcc -%if 0%{?fedora} || 0%{?rhel} >= 6 +BuildRequires: git-core +BuildRequires: gnupg2 BuildRequires: libcurl-devel -%else -BuildRequires: curl-devel -%endif BuildRequires: openssl-devel BuildRequires: lua-devel BuildRequires: make +BuildRequires: zlib-devel -%if 0%{?fedora} -# just to be able to install httpd configuration correctly, FC21+ +# Test dependencies +BuildRequires: gettext +BuildRequires: lzip +%if %{use_perl_interpreter} +BuildRequires: perl-interpreter +%else +BuildRequires: perl +%endif +BuildRequires: perl(ExtUtils::MakeMaker) +BuildRequires: strace +BuildRequires: tidy +BuildRequires: unzip +BuildRequires: xz +BuildRequires: zstd + +%if %{with httpd_filesystem} +# httpd-filesystem provides the basic apache directory layout Requires: httpd-filesystem %endif Requires: webserver @@ -62,103 +129,193 @@ Requires: webserver Cgit is a fast web interface for git. It uses caching to increase performance. %prep -%setup -q -a 1 -%patch0 -p1 -%if %{syntax_highlight} -%patch1 -p1 -%endif +# Verify GPG signatures +xz -dc '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE90}' --signature='%{SOURCE92}' --data=- +xz -dc '%{SOURCE1}' | %{gpgverify} --keyring='%{SOURCE91}' --signature='%{SOURCE93}' --data=- + +%autosetup -a 1 -S git # setup the git dir rm -rf git mv git-%{gitver} git +# add README.SELinux +cp -p %{SOURCE3} . + # Use the same options for every invocation of 'make'. # Otherwise it will rebuild in %%install due to flags changes. -cat << \EOF > cgit.conf +cat << \EOF | tee cgit.conf V = 1 -CFLAGS = %{optflags} -LDFLAGS = %{?__global_ldflags} -DESTDIR = %{buildroot} -INSTALL = install -p +CFLAGS = %{build_cflags} +LDFLAGS = %{build_ldflags} CACHE_ROOT = %{cachedir} CGIT_SCRIPT_PATH = %{scriptdir} CGIT_SCRIPT_NAME = cgit CGIT_DATA_PATH = %{cgitdata} +COPYTREE = %{__cp} -rp +INSTALL = %{__install} -p docdir = %{docdir} filterdir = %{filterdir} prefix = %{_prefix} EOF # git build flags -cat << \EOF > git/config.mak +cat << \EOF | tee git/config.mak V = 1 -CFLAGS = %{optflags} -LDFLAGS = %{?__global_ldflags} +CFLAGS = %{build_cflags} +LDFLAGS = %{build_ldflags} +NO_EXPAT = 1 +NO_PERL = 1 +NO_PYTHON = 1 +NO_TCLTK = 1 EOF -# I tried to use matchpathcon, but we would need to require -# selinux-policy-targeted probably. +# remove env shebang's from filter scripts +grep -rl '#!.*/env' filters/ | xargs -r sed -Ei 's@^(.+/)env (.+)$@\1\2@' -build_dist=%{?fedora:fedora}%{?rhel:rhel} -build_ver=%{?fedora}%{?rhel} +# remove execute permissions from contrib file +find contrib -type f | xargs -r chmod -x -cgit_context=git_sys_content_t -sed -e "s|@CGIT_CONTEXT@|$cgit_context|g" \ - %{SOURCE3} > README.SELinux - -cat > httpd.conf <<EOF -Alias /cgit-data /usr/share/cgit -ScriptAlias /cgit /var/www/cgi-bin/cgit -%if 0%{?fedora} >= 19 || 0%{?rhel} >= 7 -<Directory "/usr/share/cgit"> +# default httpd config +cat >httpd.conf <<EOF +Alias /%{name}-data %{cgitdata} +ScriptAlias /%{name} %{scriptdir}/%{name} +<Directory "%{cgitdata}"> Require all granted </Directory> -%endif EOF +touch -r README httpd.conf %build -%make_build +%make_build all doc-man doc-html -# Something in the a2x chain doesn't like running in parallel. :/ -make -j1 doc-man doc-html - -%if %{syntax_highlight} -# el5 highlight doesn't know --print-style +%if %{with highlight} highlight --print-style --style-outfile=stdout >> cgit.css %endif %install %make_install install install-man -install -d -m0755 %{buildroot}%{_sysconfdir}/httpd/conf.d -install -p -m0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/cgitrc -install -p -m0644 httpd.conf %{buildroot}%{_sysconfdir}/httpd/conf.d/cgit.conf -install -d -m0755 %{buildroot}%{cachedir} +mkdir -p %{buildroot}%{cachedir} %{buildroot}%{gitrepodir} +install -Dp -m0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/cgitrc +install -Dp -m0644 httpd.conf %{buildroot}%{httpdconfd}/%{name}.conf + +%check +%__make %{?_smp_mflags} test %files -%defattr(-,root,root,-) -%doc COPYING README* *.html +%doc README* contrib *.html +%license COPYING %config(noreplace) %{_sysconfdir}/cgitrc -%if 0%{?rhel} && 0%{?rhel} <= 7 -# Keep those two httpd-owned directories listed here until httpd-filesystem -# becomes part of EPEL. See rhbz#1138599 for more details. +%if ! %{with httpd_filesystem} +# own httpd config dirs on systems without httpd-filesystem %dir %{_sysconfdir}/httpd %dir %{_sysconfdir}/httpd/conf.d %endif -%config(noreplace) %{_sysconfdir}/httpd/conf.d/cgit.conf +%config(noreplace) %{httpdconfd}/%{name}.conf %dir %attr(-,apache,root) %{cachedir} %{cgitdata} %{filterdir} -%{scriptdir}/* +# exclude byte-compiled python files on EL7 +%{?el7:%exclude %{filterdir}/*.py[co]} +%{scriptdir}/%{name} %{_mandir}/man*/* +%dir %{gitrepodir} %changelog -* Fri Aug 03 2018 Todd Zullinger <tmz@pobox.com> - 1.1-11 -- Fix directory traversal vulnerability +* Sun Jan 02 2022 Todd Zullinger <tmz@pobox.com> - 1.2.3-8 +- update to git-2.34.1 +- use %%__make to run tests in %%check + +* Mon Jul 26 2021 Todd Zullinger <tmz@pobox.com> - 1.2.3-7 +- update SELinux README +- simplify install commands +- improve httpd config file creation +- explicitly list the cgit cgi-bin script +- create /var/lib/git to improve SELinux compatibility + +* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sat Jun 05 2021 Todd Zullinger <tmz@pobox.com> - 1.2.3-5 +- include output of cgit.conf and git/config.mak in build logs +- explicitly disable expat, perl, python, and tcl/tk in git build +- use %%{gpgverify} macro to verify tarball signature +- use %%{build_cflags} and %%{build_ldflags} +- preserve timestamps when running install +- clean up & improve dist conditionals +- remove %%_python_bytecompile_extra +- limit *.py[co] %%exclude to el7 +- refresh highlight v3 patch +- use git to apply patches + +* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Dec 29 2020 Todd Zullinger <tmz@pobox.com> +- update tar/zstd patch from upstream + +* Sat Aug 08 2020 Todd Zullinger <tmz@pobox.com> +- improve test suite's use of zstd to decode a tar file + +* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Apr 02 2020 Björn Esser <besser82@fedoraproject.org> - 1.2.3-2 +- Fix string quoting for rpm >= 4.16 + +* Sat Mar 14 2020 Todd Zullinger <tmz@pobox.com> - 1.2.3-1 +- update to 1.2.3 + +* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Jan 14 2020 Todd Zullinger <tmz@pobox.com> - 1.2.2-1 +- update to 1.2.2 +- adjust highlight requirement conditional for EL-7+ + +* Fri Aug 02 2019 Todd Zullinger <tmz@pobox.com> - 1.2.1-5 +- add missing zlib-devel BuildRequires, fixes FTBFS (#1737005) + +* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Aug 10 2018 Todd Zullinger <tmz@pobox.com> - 1.2.1-2 +- use git's default, collision-detecting SHA1 implementation +- verify upstream GPG signatures in %%prep + +* Fri Aug 03 2018 Todd Zullinger <tmz@pobox.com> - 1.2.1-1 +- Update to 1.2.1, fixes directory traversal vulnerability + +* Fri Jul 13 2018 Todd Zullinger <tmz@pobox.com> - 1.2-1 +- Update to 1.2 +- Include contrib dir in docs +- Update example cgtirc settings + +* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 15 2018 Todd Zullinger <tmz@pobox.com> - 1.1-11 +- disable automatic compilation of *.py files outside of python sitelib +- use %%bcond_(with|without) to toggle highlight +- use %%autosetup macro +- drop crufty curl-devel conditional +- fix parallel make issues in docs +- simplify README.SELinux install +- use %%bcond_(with|without) to handle httpd-filesystem +- avoid libcrypto.so requires +- run test suite in %%check + +* Mon Jun 04 2018 Todd Zullinger <tmz@pobox.com> +- make config: drop redundant DESTDIR/INSTALL, add COPYTREE +- remove env shebang's from filter scripts * Sun Feb 18 2018 Todd Zullinger <tmz@pobox.com> - 1.1-10 - Use https for source URLs @@ -1,27 +1,39 @@ # -# See cgitrc(5) or /usr/share/doc/cgit-*/cgitrc.5.html for details +# See cgitrc(5) or /usr/share/doc/cgit/cgitrc.5.html for details # # Enable caching of up to 1000 output entries cache-size=1000 # Specify some default clone prefixes -#clone-prefix=git://example.com ssh://example.com/pub/git http://example.com/git +#clone-prefix=git://example.com ssh://example.com/pub/git https://example.com/git # Specify the css url css=/cgit-data/cgit.css +# Show owner on index page +#enable-index-owner=1 + +# Allow http transport git clone +#enable-http-clone=1 + # Show extra links for each repository on the index page -enable-index-links=1 +#enable-index-links=0 + +# Enable blame page and create links to it from tree page +#enable-blame=0 # Enable ASCII art commit history graph on the log pages -enable-commit-graph=1 +#enable-commit-graph=0 # Show number of affected files per commit on the log pages -enable-log-filecount=1 +#enable-log-filecount=0 # Show number of added/removed lines per commit on the log pages -enable-log-linecount=1 +#enable-log-linecount=0 + +# Sort branches by age or name +#branch-sort=name # Add a cgit favicon #favicon=/favicon.ico @@ -29,14 +41,14 @@ enable-log-linecount=1 # Use a custom logo logo=/cgit-data/cgit.png -# Enable statistics per week, month and quarter -max-stats=quarter +# Enable statistics per week, month, quarter, or year +#max-stats= # Set the title and heading of the repository index page -#root-title=example.com git repositories +#root-title=Git Repository Browser # Set a subheading for the repository index page -#root-desc=tracking the foobar development +#root-desc=a fast webinterface for the git dscm # Include some more info about this site on the index page #root-readme=/var/www/html/about.html @@ -59,6 +71,43 @@ mimetype.svg=image/svg+xml # Enable syntax highlighting (requires the highlight package) #source-filter=/usr/libexec/cgit/filters/syntax-highlighting.sh +# Format markdown, restructuredtext, manpages, text files, and html files +# through the right converters +#about-filter=/usr/libexec/cgit/filters/about-formatting.sh + +## +## Search for these files in the root of the default branch of repositories +## for coming up with the about page: +## +#readme=:README.md +#readme=:readme.md +#readme=:README.mkd +#readme=:readme.mkd +#readme=:README.rst +#readme=:readme.rst +#readme=:README.html +#readme=:readme.html +#readme=:README.htm +#readme=:readme.htm +#readme=:README.txt +#readme=:readme.txt +#readme=:README +#readme=:readme +#readme=:INSTALL.md +#readme=:install.md +#readme=:INSTALL.mkd +#readme=:install.mkd +#readme=:INSTALL.rst +#readme=:install.rst +#readme=:INSTALL.html +#readme=:install.html +#readme=:INSTALL.htm +#readme=:install.htm +#readme=:INSTALL.txt +#readme=:install.txt +#readme=:INSTALL +#readme=:install + ## ## List of repositories. ## PS: Any repositories listed when section is unset will not be diff --git a/gpgkey-96E07AF25771955980DAD10020D04E5A713660A7.asc b/gpgkey-96E07AF25771955980DAD10020D04E5A713660A7.asc new file mode 100644 index 0000000..5edb58f --- /dev/null +++ b/gpgkey-96E07AF25771955980DAD10020D04E5A713660A7.asc @@ -0,0 +1,144 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBE6GdewBEADE3szNmKeUAUad22z1tWkLjLzyDcJpF7IzEnLs8bD1y0I6iqH0 +169ru5iXKn29wc+YAuxWorb4P5a2i2B/vs32hJy/rXE7dpvsAqlHLSGSDUJXiFzM +Bb9SfJO0EY2r+vqzeQgSUmhp/b4dAXVnMATFM37V83H/mq8REl5Wwb2rxP3pcv6W +F6i51+tPEWIUgo1N74QkR4wdLcPztDO9v7ZIaFKl+2GEGkx6Z+YjECTqQuyushjq +41K3UVmv+AmLhJYKA78HY5KqCkXrz8rCgoi+Ih+ZT2sgjx637yT84Dr/QDh7BkIB +blmpRQ+yoJlVDWI5/bI8rcdrPz+NmxaJ7dKEBg0qTclbwquacpwG1DCCD8NgQrwL +WVLGVdsT2qwek+KkmOs+iNBXY1TgKPAeuv0ZDKKYrCwYpN1K90oXk431g79bKsH5 +8Tybg5uW+e2i+H5gnDeyl481HOt8aHOPu9qIB/zIek6lDH69q3nGcf7k3prxDf3I +qYy6CPcpjTfpN4i/7gxQDNI+AIgbs21EE5Kg1TPUe0XgfdJMtIF+D6wTjbrLtDnn +09Iwz0SfIZR52IrZHxUlFXZFjk10RXYATtdMqEFgYgjYvYXxL9EEr7T5Dgso+qaE +wV0rrg0VDKrf/afrjGOeffumlhBhJnBnns1T+p65Vz5hyQl7SFKLw+Ix7wARAQAB +tCJKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+iQI7BBMBAgAlAhsD +BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCToZ45QIZAQAKCRAg0E5acTZgp1TF +EACr+QRpfDmbGnUY1Rqy50Ap1eG0061vAapCMLmU+4kxqIRKm5/00YGmb7VxRCLD +pKNa0hkH+ftA4QmnPU4j4UEsh/vAa2BGCXRjB9RixTokvQf9iOXUGiHYv1kn+p3l +xg66bLnKV3dWScjV2IueDP4ypLEZHlWD9I/Unmrg2mJEAcz4gSAfBHWLOf/+JYAq +6j6erIxPS5ZtIz/twQf6MCoXXAXuM6tgUhdptJqG82WzSZMuWOfzmS6DSTuqK05h +9gpwdj5nz4jdh4u5sp+LKOqFw94JIRcE+wj5cljOOlX3Fqi84ADC8b/OzC3V9KGa +rNnBzWdnkIoNxbNBNF6wD1dgn1peueufaP9q5CO9ljKNSOGUClwvtJFrpZZL5Phe +NNFFkPSZpkmStcB6s8RHsyz5zuqxQUOWuvLVUDRW58yZR0WC1Xc/yi+cEFSUiKI5 +OqPNwC1v0xh7a/MObJQxTQCEKHLyVYlnohsf2RxzxaOOjgWmY2O+yH5G5ymfBie/ +Uw7zcSsJ89ovLAEG/10tkJVqIfza5Wexj3VAZbI+i7vx2gtlLqM23gGykqcv7VWm +FD5lFWGC4Sw8M7Jikm8vn99dxZnsBKjMqksjENUX1JeUZI+FHg2CNSVBX0J8yLnm +d8eJBkYXkU79J3GVex/WTzbFnSkPmw16MtAu/E9EKNbAILQgSnVuaW8gQyBIYW1h +bm8gPGp1bmlvQHBvYm94LmNvbT6JAjgEEwECACIFAk6GeL4CGwMGCwkIBwMCBhUI +AgkKCwQWAgMBAh4BAheAAAoJECDQTlpxNmCn6GMQAJ0V0jmyQ7Lvi5FBBgNTdY8q +fVbLFxEUVAsKf2x9QxhsOcL2heQRVkp10JKv4/VQLfDwr6Pv98FQchXlBmFiySAb +VihUVC+VJ3FhyKBtI14RXT6Nkwd18PXDvWXy2fKeiK9GPDWkufac0h/giz0T1xP7 +CHxDErQATMmYbkinyyM+xd1Nir6DUYcHJQIK2Dg2VPChkI0XXCQETLDbrC9fDwWg +1vP36PQZ+nw/cIRt+2xkq8HHUzB7kOnXHqPt1kb/Ry8hZwPnfV7g/V0MogoMLtz2 +33pqwuguLXP7zY3jTwAZZ9VTpuCTsdVWXJDlznMNurYi1yurCNuUvq/O/9JC8WBt +dVUuvFZGjRZWfP24W57iq/qz8CV6dThq5r4WygE83tMC3DaarNJ4f9dQUA4KpL7j +2EMXkgoXcEy1mieUCypdNiZj96hV8Q7apSLk2V4jtvLkJfzX053glqRJI35SX8Ok +SazZGYZHX6QfZlvznnrCF5x/xBzhbfr2Geo4rxL0BQsp2DQodqUCB23QzsPhWWff +YtkATaD5vovGeQ9Acd1u72jH3DO8tVMH85jMO4f+oc0h3lnkPS4F33QqlnErRo/I +Rm6jCsI/NgMZUYdh0EY5Iiq/e8e+u8gdo0akkwHlNvR4KrYrK/1K4h+i+UBIbJDZ +pqT/iH+yhJRQ3CAan8KStB9KdW5pbyBDIEhhbWFubyA8amNoQGdvb2dsZS5jb20+ +iQI4BBMBAgAiBQJOhnjVAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAg +0E5acTZgp4SyD/9slQ1IkYqz+VXPnmHCQFhurYcHD8t1iGBqiXxI+gpA1Y3L1QL+ +aj0fplW4KuEPbJ7xlYdLA4J+M9kgkwt3Jufw+lM1pQM9tSB627rAbxUyczj4AFjZ +9v8GpqyZ3XPDe8NknI/V4Xlhsr+e3AHJPr355XacMkFGc3Rtw1quFVgrECttdzUD +6xtrhwYYVAYAnKr65943UtMLsVXkJLfjq8c1NZOCov9SwSb0N9IkEhSyihd/92Z2 +NH4d+B1QTIyWagL3GNN8LXXEHK+x+oA/nbhGbFg7bqhxUW4d2JaxKPy4U3nfdtSm +Mbiy16eUfMbbMyvB0jtLf6UFrxF5bJnYkiG18DcLSaX7Hsby8IVzZQZHYvkx5+7p +K2SBsdek3bu3punP3dWLJoMw+Vmm5Bk0Yl7pxzvsYQWhPV7+tpgglUSFQuIeXFrw +jVXP8Q+Ph9nO0vKIaeTcn1ISuq2XaoqhkLH+Zw1I/ruRtk2DJbZsg5BBGfA26BkZ +WJXlO6h33emPwkJ0FanlzRtMTqZ/4RiTXv5G1L/lypX1iq6fF2V+WTh2JmEKyY+2 +l0/19XRANfaDiYULoBvJEdCcIXLbaRTqjem+70ZGvAiCaGO52YvUhBo+XCgjucjc +qhxiF3wc24kzj1ZycrwbDa7VjftZAApN01CJ38mXGpZXiWZU4hjJx41wCbkCDQRO +iUo5ARAA8l5PToapmK0IHBpY5ohie53ZczLV5ojWKZXNsmVYNuSBBKpwC6VH2X85 +9dVd59HigAYsS1TbDCUNGC1bM0thJ9Y92fa1WnlEqyYQZDmJ4rt283DT2Gmrkng6 +XPjvr8PZeHKtvw7uLywfdm4x0WrGrH34g17BL82u/7k0JUOgJoPulIkO9Mls35UJ +SY/Zwk1EdkM4hHKmqJFIiW/DlPYh0Tj5x9Sukk0ATH/R/QdtpjvwJJZyph6gMhbi +YB+G+nR/WZy9vB+bFwPPaa0EudADoIZ9LkQzU/55KqNnKH9dPqPVWEOBZVZvPqiR +iyRuffMIJ0t9mtvc/jruS1qiTZdJoy2vl6K4Uqc+huvlHeCCYR0lGCeDB+Ixuz9x +d2ZdUxMgwgcNiQOCW70YWtxf0LF2seSJdLItHDBOu/f3cqKwNGUvcC3d/9qVb0wP +SI1mq18S02MGcvDySsjGtX7o4kujUqE2ZNCW6ORLJUC6zEYu3TRNWrXeS3uAP21x +UrEPkuTiJL7SCS12FYJt5agx5NIUKI7bkIUbLbiuhC4z47MFajW9Y5jUQk86dk7b +jGqVrXYIu92Dhxc2CND2fWaMpYRhwvHR6KQU1yYHYkGVlMHiozM5D+4dCRRVI8x3 +p/+ypFBZmZr7yTpv/qD0N8HHl2NAYvGRQdzjyFQOXERwaXuzjCkAEQEAAYkEWwQY +AQoAJgIbAhYhBJbgevJXcZVZgNrRACDQTlpxNmCnBQJeHMcfBQkenRjmAinBXSAE +GQECAAYFAk6JSjkACgkQsLXohpav5sukpRAAywCaKmo0HH77yNkqormnKtRBrz8j +tx68e//pq/AyCrghKUh91iLGYji3/E1qQe7p7Ne7WAn3uFZs22zrNKIDGxtMMCQT +C0Ne4BAvMh1NzwzzBCCyirs1ccLj5gKkoFkKfTo5U5NWNznYPM8uib1uY5vdRqIJ +2vJ7JJykNdcW5od42TtWsOxH2zTp4SRNmX8QPaRbfOxPdlKsbp0eIO6kk+Lx6gEv +WAtEda5xSd1PwyK7SfGadTm+8Rw5UeP1kRtuKQPm7sRBB0coXDVHpFi/nMWHzVxv +/NKhLAkzIbGOV6rL8ihVhXGqEgiD5Q+QdbaNsiLtHo5niBzpbnzvSopBYcOftrhc +PNDY0RYXYb/5JZUid/JBWKwV+zREEnbgtsYDbwFEDnCVIGyXAoxyas/S3b14izat +qgINxiYuxpDY+w1O5RywjOTdLPUWlL5YhH1W/gwbdyGiL4sh0v/fzNy0vKR5zPt1 +hICEA9YvCI7k3b74O6eiDB5fMIRPkNr6ubZWe0T6x4eL2EjSFRXIEmbmnAh93pdp +WFrXH+Sf1LKhBZzojgUsQU/rzB2R94S7Vx0Z+tzgDZ8fJe47ZUEfzJccyyGve/QA +sLLgTWRwRP3MSa1rC4wuWtDDMk/drw9CpmeFeRFn0oDIBo/m2mBv+UNAxSdijREz +vPRiwROma/RawVcJECDQTlpxNmCnTLQP/A1WNmgPCCyFqp812Zvgh0pAqceaM+dg +FlvNi5j5Jyw7/hicx2e0BXgKt64TEodphknCFzZIFDq3jJSdLt1l9NHpiLVM0Hf0 +cLFGF3eRHOID7PeGJGztLJ0CGhhSXaPh7nNLK0G9zXCAasedpowX4ZUntv+p/+Fr +jQ8eSgyyljvrlywK+tH07F1W6t6eMNOw7/AHx7fkOux4CDem1FsNbhZWX8YPUATo +vP1YLBXcrQgpJPpypG6up56D70ewTs4l+qNOISr3phG2egeEhYNwv6GUv8aelh69 +iaUHscT+DOXrFKq+RSHBMzGFFTrDJFDSu3d3A5Rg8KxJMcOxc00L3GMPchrFiJH7 +QShAQdU/ocF0MAA6n56g/QynxafFI/MRMXVTmF+lMBW/kK63pD3AJkIgvdLdht5o +s7aKlddPrmIulaELIDdF2MSicMmgWJcqFkqZH2HIC+gx26Fafn2vfiUqsEc4NTpZ +qhf66F9UjPKfYFfLhbGrmq/giAk1qjiGnBzCUQ9hXVqpmFfnVDjmQrk8KB9skDms +PJgZ4hzmj5AarCpFtDmE4W7Tvi/xqgrFZkPX/SDhTWInJGcWaOTvlc5dkjAxKT6X +LUGLScJHxhaovTGVzq1GWhhNCFhCs4AkWqPKhYfeZuWiuiMLZaEyJPfTufT7Svab +pOhlaD1YY8fvuQINBE6GdewBEADxm56jO5pnVRH13BsG38o1qD9mJppXhf0mb6dB +ORP1b3YJNaknQtxVPXSlXNAYNStYs9bWwn+RrYmOEfy0MWekqOBqgHDEf50ktZaz +hFd89dt58IA+WIFo7BFk1XIr4USdSEQeL7Pb4oSg5AYn8C3OlT7T3nxWBh9aEbat +EfiUMFKikLVVLdbEL7FBzEkypHfQCslDlq+ggAAVBzqrMIBn/idto87UrF2x/qd2 +P2PJl9pUf744pL9yzX+cNbQld0Yf6gQW9/r0UUW/CCU4qpPDvycyGIx3Y7PV/MjA +lre4qJv4khoSFasAAjDXzyUIYhw7yMmaAE/lEOVN7M6reYDvhaDCcWfEn8sjH03/ +Wa92vVx7boMx5RAEh8YE2KZHEZkAODlW4pnDKyaH38lj8pa0dh77RXAD6X1XPGwi +zpmjfrBBPGvUNGsdIpJaY4KEaZ0+v3bhvfU0DWB4dmJB3aPxC6CFtVA0QBGcbw16 +jUeA+2LUJgWMs86npHaPzD99J4Q+Smw9mZPfyT5O5yymYXOwIp50aUjkGCQcHtt7 +jisNkU52bFD2JcQJr8o67JIcqFNdhPAnxC+BN0QDtCyXT+wxC1Uvh9E//r3JPEQD +REfEUb3l+3Sarz1KCm3LUhx1XE82Z6c96tHopUfiOiwbtxv+8UypXT2ntKfprz1U +dMb5jwARAQABiQIfBBgBAgAJBQJOhnXsAhsMAAoJECDQTlpxNmCnFKYP/j6dmEQW +ZliWE8le9Qzh1WqTbHd5elaGJuW0KGQ+g9okWBkh+sLlPxxTk2f0b79Pc7K3OPy7 +89OcIsrbHD3jDp7TS9IVpX7kVZnvnts5oV3XcK5q84XDEQqa6UIlfiZkZJCzIX8N +kSAbv0UmmKKLKS+ANIEIZBKBrWxpYwvG2wBoWPkpNv5mdEuR9h3pZ1aCSZRXysMl +WXo5cMYuZUhabrOqTNP5efEm8iBREHzNSotsiOhHuu7OIPmvZJTUjMrR1wZMCw+Y +uNO2kT3t+ZFTxCx2aeRzqnI55LYFQVBpgSsap/seqRZfj7j7SBb2bSbCuhNedbAw +b3kDWSfJGy/IN6vPdsc3NdsYFK+X8cnypCu4pZDK2IU+CkVrq/ukR8TNdrpAYfEY +XbLq0XFOT0s4jIcjf3dAtlGW36hA0AKPw1BL3cyEGfv2sq75gkw1/jIYMXGc8URJ +y5AfgELIrO1dIjMsm6vFFLeHpAobEP87UEpqIyJtwEIfWdcV5YHYmlFkGd21Lnxp +f2dBAh5dc4MJpYmFZGScSDtTcYCDEXICTgedVOt4WCaV5mwpPeSEzr2TOVm6d1nU +lGBJCV6QPMEdyx03hRkwaTMth0D/SYCvUrjlGQ1VC4WuTveSBhTH7iDrjGSoXNJu +P2Oq+jb/iAfZxuetjpKFD6TCMR0Bcs/cEZuXuQINBFQduiABEACYnNg+kGmtkPmt +kQ/75P8lLsljMk9IIwXGmnFILLpHBM/tN+7wGDxODLY/pPZ2Qfmp7PZLr5Ok5Qnt +v/g+YCtVaTu5Cajt2TOsyH+AYDqtrjjHIt8d2kVloq79ONsCUojFtbFD1nf5W9Sk +WQgntHYRYY1MaCkNd3oUp74TQugzk8Q6UBDamAn1r4nfm6QNXstItqyWsCgQhixW +Qi4WzQc4iA/83t+qUJ+32smjk6J+rGUbbEH8zTASXmcDWYBuPgjo3YEjV+3/qNar +zncYneJfQXwFSgvcR9oUuBQ3ydWJd7sfiImuAnQdRfEC/JFb0iR9sJ395Pw5WQfM +Esrp0uL/Uig52mSrFyIfanxhrJP4j+CyCcJp1TaFINag5/YwHX3GzoikwXUukb+h +KxXxK9Vu8Eu2gAlKFaHt2x5Sc3D1d+nr2QyMkIThC6/d3+XUjgOIMWkCK5dgkuz6 +rs60cRQr8YBGf4Jgk/Xrkk/SjBjBlcTz9lrC06wBRCsa+0XxCAHlM7gVp0HvMn+h +Kx9ny7dPqaqhg8WXuBL0n8yAXXDSgDAin55mRbiKq2bNuMaEJvwKNFU6ENHGSngT +w/Pt6B0dbeB1SBVxJPGbGmk74BL8m5V67Kb7MDP05OLSZsUyNLQCpfSgYsUA14uV +GHE/vE6haP9/DwMLdyJ/CxSjQJMk+wARAQABiQRbBBgBCgAmAhsCFiEEluB68ldx +lVmA2tEAINBOWnE2YKcFAl4cxyAFCRkIqP8CKcFdIAQZAQIABgUCVB26IAAKCRB1 +lO7Hs/fKyah/D/wJ3v4WdqGo7KgW0kmWfFVWZLKwtb+16gcy6nIm7F7VUcODv+qR +LA/4UUg72yabVCXnMBi/eEHtkVZWlB/+tzg643DiRvXTCZiwoS5c6fTze55e/Z87 +qY7okf40aTR+qWuMgligI/LeXunr1Pu2jlJLMcUVh5QLxLZ8bDqpDgQM9zcdFmKQ +/ofUnK7y6gYyUl2KYJDYi0alzjTm+73/S0Mc7z08Yp/s+dtKPbU9imKCnNRkPTQp +cwlYHWJv0YPQ0TdOkid6HJC7CmZEPH845D+qojAjYBPogNIj/RaByaT3kN32zu8+ +jaZJSCnBM0l2lSh/qO7sQBZhqPX5pJDjjj7d/ATY7XxJCnK/2cZVSuVhMXPIFIAQ +G4ZYFUaQssjQKLN7BXJUo7+ec1AMkTiwDUocPza8h+fitcpOsWWJWWvZvkSObbuP +KGn7BgoTzEehO2Rz0QsNjgOa5SXxmc0zX7sbB1XiMxSe7gBZBOnYjhPVcidO3tWu +M/jXGfZAL9ISq6Zf47ebXA7Y+6Bx3oquMgtSN10gbdoJvjqEBJNN65wadvBP8+Sr +L+nWRGhsfmu8jupXdJe8h8ysXCboVkpXHuSu+lDjeL9WLqpwc/XkaOy7B6PfwIRa +YYHnsKs8ogvDuTRJPV4khizyt+A6aiQ1PQqxSKWGY+lzxbmBkPhp5v1N5wkQINBO +WnE2YKdkRQ//ZKvUegOZTtfivAZI888o4Ocpig3CFxJGlXa52JUnDhYFFpRtXRTP +gIdQ0zBvhNjmBnELNv5/D1ubnjqWBTaJpZgUXIljJufuWL7VdD57nAAMw2VLvNUe +38iytUYTAPevaJtLQ4jfj3E9MYH4tcMBmlZ75ZKqiHHH+7+V5J8TD/S01xROK7H1 +kGkXo49deB7K9oT4uno8kE5+AgmEMI80XiKjfQkh6tiG5I0W58DLeAOIxCRkm3kH +Bi22PpuAKhRelRQnAF9dLdlhZECy5eYl7JKQzOS/dQ0Z3zg+HuDBRyhrmV/go/9C +npFGUZBa+FOC1GMO07GKH8tZY99D5tDCAH6r6S+RrYS690mWpjXhqouBtJezld+X +dsgKwgKHk3IEM4m916O0E75kiNk/AD7vZowwEBvPsgN+CDXCPgH4J5x0p9uyxnKH +omLBd7cuJpio6gf4O1KTl1tlVGcb8f+AUR/MIe70NXyEtpYWMiPW3/0dKwt9APgW +KSX0c8Mp2XKH/vAEDx86XTfBNrnXyUanOQhbLQciYzolJjiPrB0C2NgFFFXSHPwC +ikyT5n2RehAJVmg3eufB1ZOKQgo7ue3ynkW4JidgyCUtsoYSmipl9Nhw1hA3ZNK1 +FVCx7tcmy0ZHFO+PV+p17oAC8ZCxSRE0oTeHKcgpF5+DRhQM/+UnmKg= +=7hTI +-----END PGP PUBLIC KEY BLOCK----- diff --git a/gpgkey-AB9942E6D4A4CFC3412620A749FC7012A5DE03AE.asc b/gpgkey-AB9942E6D4A4CFC3412620A749FC7012A5DE03AE.asc new file mode 100644 index 0000000..db7bb9b --- /dev/null +++ b/gpgkey-AB9942E6D4A4CFC3412620A749FC7012A5DE03AE.asc @@ -0,0 +1,446 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +nL4R5Qie03YIFHrDh/4= +=GTxh +-----END PGP PUBLIC KEY BLOCK----- @@ -1,2 +1,4 @@ -SHA512 (git-2.10.2.tar.xz) = 0ab09de481dbb31c3304382afaa5d3fc9f861115c9954c65b11a8a1c34b939118c7ed3ff60ac329145888596388e3e4d2b2fb677fe109d33a57206d531b5ee6a -SHA512 (cgit-1.1.tar.xz) = 8f2ec418716d7a6f0880a713b622f2ee41217dc2d5462903841d59d978a021a8bc2be667ca65c25baee2b9dcd4a76bddd0c813bda0486109cc694e7610827051 +SHA512 (cgit-1.2.3.tar.xz) = 58f9bb644b07be49dc51f3ef30a3d0e53699cede3c06b1d6920f3874fe846c83dd2589632aa84357b70ea2d60272448409aa1b892f405d14dd6745f5559b4504 +SHA512 (cgit-1.2.3.tar.asc) = 6694f799bbf7c28baa683be0a2b51b0611d80b9611db9e1705e55e45e2501a1955910f90f9246a8ca52f61a2d34ac6262825f6a0165e67ec57189a8242aa4faa +SHA512 (git-2.34.1.tar.xz) = a1a8e9e6f64b1da25508fbd2f783564dcdbe181fb5ff1ebab3bdac6db6094e18acc334479a1abf22ac17ce4f733cc3e10a664db9ab234cd523735a3f027b42db +SHA512 (git-2.34.1.tar.sign) = a1111276e18da1a7b360e3ed3b8460034ea413b116482b0b66342f8873a9dd02a90f3f5bc7ad1e4b3c7f39ed55926a8155064b849e6e6bdf9478cb85b93f10b5 |