summaryrefslogtreecommitdiff
path: root/etc/apache2/conf-available/local-cgit-legacy.conf
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2020-08-13 19:21:14 +0200
committerJonas Smedegaard <dr@jones.dk>2020-08-13 19:21:14 +0200
commit95862f2b20c81294413824ec2dd00f9b17905994 (patch)
tree828217c395c60630070510ee247e323861260b86 /etc/apache2/conf-available/local-cgit-legacy.conf
initial commit
Diffstat (limited to 'etc/apache2/conf-available/local-cgit-legacy.conf')
-rw-r--r--etc/apache2/conf-available/local-cgit-legacy.conf157
1 files changed, 157 insertions, 0 deletions
diff --git a/etc/apache2/conf-available/local-cgit-legacy.conf b/etc/apache2/conf-available/local-cgit-legacy.conf
new file mode 100644
index 0000000..3a0f593
--- /dev/null
+++ b/etc/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]