- # 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]
|