aboutsummaryrefslogtreecommitdiffstats
path: root/www-apps/cgit/files/cgit-1.2.3-disable-cached-clones.patch
diff options
context:
space:
mode:
authorWynn Wolf Arbor2020-07-03 15:32:00 +0200
committerWynn Wolf Arbor2020-07-03 15:34:25 +0200
commit4627497bb5a9fff46a5daad4898c2809944d5bd5 (patch)
treea5ee8a6225c02836bd371f4245712c116bc78226 /www-apps/cgit/files/cgit-1.2.3-disable-cached-clones.patch
parentea0a413d193d9bd2e1eec845f6fda8641cb2f659 (diff)
downloadpramantha-4627497bb5a9fff46a5daad4898c2809944d5bd5.tar.gz
www-apps/cgit: Split git-http-backend patch in two
Disabling cached clones can be a feature of its own, so split it out of the git-http-backend patch. This is cleaner in the long run. Package-Manager: Portage-2.3.99, Repoman-2.3.23
Diffstat (limited to '')
-rw-r--r--www-apps/cgit/files/cgit-1.2.3-disable-cached-clones.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/www-apps/cgit/files/cgit-1.2.3-disable-cached-clones.patch b/www-apps/cgit/files/cgit-1.2.3-disable-cached-clones.patch
new file mode 100644
index 0000000..c9c547e
--- /dev/null
+++ b/www-apps/cgit/files/cgit-1.2.3-disable-cached-clones.patch
@@ -0,0 +1,58 @@
+From 8f9eeb3280c43ef184eb6ce08b322bc7d9ad6c3f Mon Sep 17 00:00:00 2001
+From: Wynn Wolf Arbor <wolf@oriole.systems>
+Date: Fri, 3 Jul 2020 15:17:02 +0200
+Subject: [PATCH 1/2] cache: Disable caching for clones
+
+Whilst the cache feature is useful for content that the web browser will
+see, it is less useful when cgit is asked to clone a repository. Users
+might end up with a tree that is ever so slightly out of date.
+
+An upcoming commit will introduce functionality to offload clones to
+git-http-backend(1). The cache feature will prevent this from working
+correctly.
+
+Therefore, disable cache processing for commands that have the is_clone
+flag set.
+---
+ cache.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/cache.c b/cache.c
+index 2c70be7..bb4fc47 100644
+--- a/cache.c
++++ b/cache.c
+@@ -15,6 +15,7 @@
+
+ #include "cgit.h"
+ #include "cache.h"
++#include "cmd.h"
+ #include "html.h"
+ #ifdef HAVE_LINUX_SENDFILE
+ #include <sys/sendfile.h>
+@@ -356,6 +357,7 @@ int cache_process(int size, const char *path, const char *key, int ttl,
+ struct strbuf filename = STRBUF_INIT;
+ struct strbuf lockname = STRBUF_INIT;
+ struct cache_slot slot;
++ struct cgit_cmd *cmd;
+ int result;
+
+ /* If the cache is disabled, just generate the content */
+@@ -370,6 +372,15 @@ int cache_process(int size, const char *path, const char *key, int ttl,
+ fn();
+ return 0;
+ }
++
++ cmd = cgit_get_cmd();
++
++ /* Do not cache files that are being cloned */
++ if (cmd && cmd->is_clone) {
++ fn();
++ return 0;
++ }
++
+ if (!key)
+ key = "";
+ hash = hash_str(key) % size;
+--
+2.27.0
+