From b44bd354b9ed91f54079adb513d2828e3f978c9e Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Sat, 14 Mar 2015 04:54:48 +0100 Subject: Add gitweb → cgit rewrite ruleset. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apache2/conf.available/local-cgit-legacy.conf | 157 ++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 apache2/conf.available/local-cgit-legacy.conf (limited to 'apache2') diff --git a/apache2/conf.available/local-cgit-legacy.conf b/apache2/conf.available/local-cgit-legacy.conf new file mode 100644 index 0000000..3a0f593 --- /dev/null +++ b/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] -- cgit v1.2.3