summaryrefslogtreecommitdiff
path: root/cgit
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2016-04-29 18:51:19 +0200
committerJonas Smedegaard <dr@jones.dk>2016-04-29 18:51:28 +0200
commit99756ab887912bbb0bba0401a2650c6ce2123a29 (patch)
treee478197765e32cbc4e520c65bdff3f60c81b6d1b /cgit
parent2214e868589631eb347ff73b2ae11969554bf3cf (diff)
Move and improve cgit snippets.
Diffstat (limited to 'cgit')
-rw-r--r--cgit/apache2/conf-available/local-cgit-legacy.conf157
-rw-r--r--cgit/apache2/conf-available/local-cgit.conf15
-rw-r--r--cgit/uwsgi/local-git.ini21
3 files changed, 193 insertions, 0 deletions
diff --git a/cgit/apache2/conf-available/local-cgit-legacy.conf b/cgit/apache2/conf-available/local-cgit-legacy.conf
new file mode 100644
index 0000000..3a0f593
--- /dev/null
+++ b/cgit/apache2/conf-available/local-cgit-legacy.conf
@@ -0,0 +1,157 @@
+# Based on http://www.clearchain.com/blog/posts/cgit-upgrade-gitweb-retired
+#
+# Redirects mapping gitweb -> cgit
+#
+# Gitweb uses get targets seperated by ;
+#
+# /?...;...;...
+#
+# p = Project
+# a = Action like (
+# blob,
+# blob_plain,
+# commitdiff,
+# commit,
+# history,
+# log,
+# rss|atom,
+# shortlog,
+# summary,
+# tag,
+# tree,
+# snapshot
+# )
+# h = SHA Hash
+# hb= SHA Hash Tree Base
+# f= file/dir
+# sf= snapshot format
+#
+# Cgit uses the following:
+#
+# /project/action/?...
+#
+# action ( commit, log, diff, tree, tag, patch )
+#
+# id = SHA Hash
+# id2 = SHA Hash
+# h = head
+#
+# Translation rules
+#
+# Project is a straight redirect
+# ---
+# /?p=(.+)\.git; /$1/
+#
+# Action requires a mapping
+# ---
+# a=(blob|tree) /tree/
+# a=(blobdiff|commitdiff) /diff/
+# a=commit /commit/
+# a=(summary) /
+# a=(shortlog|log|history) /log/
+# a=tag /tag/
+# a=blob_plain /blob/
+# a=rss|atom /atom
+#
+# Targets require mapping
+# ---
+# h=(.+) id=$1
+# f=(.+) /$1
+# hb=(.+) id2=$1
+#
+# Now putting it all together
+#
+RewriteEngine On
+
+# blob
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=blob;h=([^;]+);hb=([^;]+);f=([^;]+)
+RewriteRule ^/$ /%1.git/tree/%5?id=%3;id2=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=blob;f=([^;]+);h=([^;]+);hb=([^;]+)
+RewriteRule ^/$ /%1.git/tree/%3?id=%4;id2=%5 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=blob;hb=([^;]+);f=([^;]+)
+RewriteRule ^/$ /%1.git/tree/%4?id=%3 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=blob;f=([^;]+)
+RewriteRule ^/$ /%1.git/tree/%3 [R=permanent,L,NE,QSD]
+
+# tree
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=tree;h=([^;]+);hb=([^;]+);f=([^;]+)
+RewriteRule ^/$ /%1.git/tree/%5?id=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=tree;hb=([^;]+);f=([^;]+)
+RewriteRule ^/$ /%1.git/tree/%4?id=%3 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=tree;h=([^;]+);hb=([^;]+)
+RewriteRule ^/$ /%1.git/tree/?id=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=tree;hb=([^;]+)
+RewriteRule ^/$ /%1.git/tree/?id=%3 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=tree
+RewriteRule ^/$ /%1.git/tree/? [R=permanent,L,NE,QSD]
+
+# commitdiff
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=blobdiff;h=([^;]+);hp=([^;]+);hb=([^;]+);f=([^;]+)
+RewriteRule ^/$ /%1.git/diff/%6?id2=%4;id=%3;id3=%5 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=commitdiff;h=([^;]+);hp=([^;]+)
+RewriteRule ^/$ /%1.git/diff/?id=%4;id2=%3 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=commitdiff;h=([^;]+)
+RewriteRule ^/$ /%1.git/diff/?id=%3 [R=permanent,L,NE,QSD]
+
+# commit
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=commit;h=([^;]+)
+RewriteRule ^/$ /%1.git/commit/?id=%3 [R=permanent,L,NE,QSD]
+
+# shortlog
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=shortlog;h=([^;]+)
+RewriteRule ^/$ /%1.git/log/?id=%3 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=shortlog
+RewriteRule ^/$ /%1.git/log/? [R=permanent,L,NE,QSD]
+
+# log
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=log;h=([^;]+)
+RewriteRule ^/$ /%1.git/log/?id=%3 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=log
+RewriteRule ^/$ /%1.git/log [R=permanent,L,NE,QSD]
+
+# history
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=history;h=([^;]+);hb=([^;]+);f=([^;]+)
+RewriteRule ^/$ /%1.git/log/%5?id=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=history;f=([^;]+);h=([^;]+);hb=([^;]+)
+RewriteRule ^/$ /%1.git/log/%3?id=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=history;f=([^;]+);h=([^;]+)
+RewriteRule ^/$ /%1.git/log/%3?id=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=history;h=([^;]+);hb=([^;]+)
+RewriteRule ^/$ /%1.git/log/?id=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=history;hb=([^;]+);f=([^;]+)
+RewriteRule ^/$ /%1.git/log/%4?id=%3 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=history;hb=([^;]+)
+RewriteRule ^/$ /%1.git/log/?id=%3 [R=permanent,L,NE,QSD]
+
+# tag
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=tag;h=([^;]+)
+RewriteRule ^/$ /%1.git/tag/?id=%4 [R=permanent,L,NE,QSD]
+
+# blob_plain
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=blob_plain;h=([^;]+);f=([^;]+)
+RewriteRule ^/$ /%1.git/blob/%4?id=%3 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=blob_plain;f=([^;]+);hb=([^;]+)
+RewriteRule ^/$ /%1.git/plain/%3?id2=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=blob_plain;f=([^;]+)
+RewriteRule ^/$ /%1.git/plain/%3 [R=permanent,L,NE,QSD]
+
+# rss|atom
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=(rss|atom);h=refsheads/([^;]+)
+RewriteRule ^/$ /%1.git/atom?h=%4 [R=permanent,L,NE,QSD]
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=(rss|atom)
+RewriteRule ^/$ /%1.git/atom [R=permanent,L,NE,QSD]
+
+# snapshot
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?;a=snapshot;h=([^;]+);sf=([^;]+)
+RewriteRule ^/$ /%1.git/snapshot/%3.tar.gz [R=permanent,L,NE,QSD]
+
+# summary
+RewriteCond %{QUERY_STRING} p=([^;]+)(\.git)(;a=summary)?$
+RewriteRule ^/$ /%1 [R=permanent,L,NE,QSD]
+
+# Failsafes in case nothing above matches,
+# try at least to put the person in the project, else root of cgit
+RewriteCond %{QUERY_STRING} p=([^;]+?)(\.git)?.*
+RewriteRule ^/$ /%1 [R=temp,L,NE,QSD]
+RewriteCond %{QUERY_STRING} .+
+RewriteRule ^/.+ / [R=temp,L,NE,QSD]
diff --git a/cgit/apache2/conf-available/local-cgit.conf b/cgit/apache2/conf-available/local-cgit.conf
new file mode 100644
index 0000000..fb47228
--- /dev/null
+++ b/cgit/apache2/conf-available/local-cgit.conf
@@ -0,0 +1,15 @@
+AddDefaultCharset UTF-8
+
+<Directory /usr/share/cgit>
+ Options None
+ AllowOverride None
+ Require all granted
+</Directory>
+
+Alias /cgit-css/ /usr/share/cgit/
+Alias /favicon.ico /usr/share/cgit/favicon.ico
+Alias /robots.txt /usr/share/cgit/robots.txt
+
+<LocationMatch ^/(?!cgit-css/.*|facicon\.ico|robots\.txt)>
+ ProxyPass unix:/run/uwsgi/app/local-git/socket|uwsgi://local-git
+</LocationMatch>
diff --git a/cgit/uwsgi/local-git.ini b/cgit/uwsgi/local-git.ini
new file mode 100644
index 0000000..0b9c27c
--- /dev/null
+++ b/cgit/uwsgi/local-git.ini
@@ -0,0 +1,21 @@
+[uwsgi]
+
+# serve via uwsgi protocol to frontend webserver
+# * load CGI plugin as default modifier1 to ease frontend setup
+plugins = 0:cgi,router_cache
+
+threads = 8
+offload-threads = 8
+
+# serve static files directly (even better: serve by frontend webserver)
+check-static-docroot = 1
+static-map = /cgit-css/=/usr/share/cgit/
+static-map = /favicon.ico=/usr/share/cgit/favicon.ico
+static-map = /robots.txt=/usr/share/cgit/robots.txt
+
+cgi = /usr/lib/cgit/cgit.cgi
+
+; cache indexes
+cache2 = name=indexes,items=100
+route = /$ cache:key=${REQUEST_URI},name=indexes
+route = /$ cachestore:key=${REQUEST_URI},name=indexes