]> git.donarmstrong.com Git - zsh.git/commitdiff
more flexible giturl handling
authormartin f. krafft <madduck@madduck.net>
Fri, 30 Jul 2010 20:27:35 +0000 (22:27 +0200)
committermartin f. krafft <madduck@madduck.net>
Fri, 30 Jul 2010 20:27:35 +0000 (22:27 +0200)
.zsh/func/giturl

index 26587e2087ad179b3862323afbc6d2c86b06924f..61532dc94b5eab3814163d16d1f3815f2d3af499 100755 (executable)
 # Source repository: git://git.madduck.net/etc/zsh.git
 #
 
-local GITWEB_BASE
-GITWEB_BASE=http://git.madduck.net/v
+local remote; remote=$(git config --get remote.origin.url)
 
-local REMOTE
-REMOTE=$(git config --get remote.origin.url)
-
-local part
-case "$REMOTE" in
-  madduck:pub/*) part="${REMOTE#madduck:pub/}";;
+local part gitweb_base oldstyle
+oldstyle=0
+case "$remote" in
+  madduck:pub/*)
+    gitweb_base=http://git.madduck.net/v
+    part="${remote#madduck:pub/}"
+    ;;
+  debian:*|*://git.debian.org/git/*|*@git.debian.org/git/*)
+    gitweb_base=http://git.debian.org
+    part="${remote#debian:}"
+    part="${part#*://git.debian.org/git/}"
+    part="${part#*@git.debian.org/git/}"
+    oldstyle=1
+    ;;
   *)
     echo >&2 "E: I do not know how to translate $REMOTE into a gitweb URL."
     return 1
     ;;
 esac
 
-HASH=$(git rev-parse HEAD)
-echo $GITWEB_BASE/$part/commitdiff/$HASH
+local hash
+hash=$(git rev-parse HEAD)
+
+case "$oldstyle" in
+  0) echo "$gitweb_base/$part/commitdiff/$hash";;
+  *) echo "$gitweb_base/?p=$part;a=commitdiff;h=$hash";;
+esac