From 99756ab887912bbb0bba0401a2650c6ce2123a29 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Fri, 29 Apr 2016 18:51:19 +0200 Subject: Move and improve cgit snippets. --- cgit/apache2/conf-available/local-cgit-legacy.conf | 157 +++++++++++++++++++++ cgit/apache2/conf-available/local-cgit.conf | 15 ++ cgit/uwsgi/local-git.ini | 21 +++ 3 files changed, 193 insertions(+) create mode 100644 cgit/apache2/conf-available/local-cgit-legacy.conf create mode 100644 cgit/apache2/conf-available/local-cgit.conf create mode 100644 cgit/uwsgi/local-git.ini (limited to 'cgit') 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 + + + Options None + AllowOverride None + Require all granted + + +Alias /cgit-css/ /usr/share/cgit/ +Alias /favicon.ico /usr/share/cgit/favicon.ico +Alias /robots.txt /usr/share/cgit/robots.txt + + + ProxyPass unix:/run/uwsgi/app/local-git/socket|uwsgi://local-git + 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 -- cgit v1.2.3