# 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
+local part gitweb_base oldstyle
+oldstyle=0
+case "$remote" in
madduck:pub/*|ssh://git.madduck.net/madduck/pub/*)
- part="${REMOTE#madduck:pub/}"
+ gitweb_base=http://git.madduck.net/v
+ part="${remote#madduck:pub/}"
part="${part#ssh://git.madduck.net/madduck/pub/}"
part="${part%.git}.git"
;;
+ 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/}"
+ part="${part%.git}.git"
+ oldstyle=1
+ ;;
*)
echo >&2 "E: I do not know how to translate $REMOTE into a gitweb URL."
return 1
;;
esac
-echo $GITWEB_BASE/$part
-HASH=$(git rev-parse HEAD)
-echo $GITWEB_BASE/$part/commitdiff/$HASH
+local hash
+hash=$(git rev-parse HEAD)
-echo $GITWEB_BASE/$part/tree/HEAD
-for i in $@; do
- [ -f "$i" ] && echo "$GITWEB_BASE/$part/blob/HEAD:/$i"
- [ -d "$i" ] && echo "$GITWEB_BASE/$part/tree/HEAD:/$i"
-done
+case "$oldstyle" in
+ 0)
+ echo "$gitweb_base/$part"
+ echo "$gitweb_base/$part/commitdiff/$hash"
+ echo "$gitweb_base/$part/tree/HEAD"
+ for i in $@; do
+ [ -f "$i" ] && echo "$gitweb_base/$part/blob/HEAD:/$i"
+ [ -d "$i" ] && echo "$gitweb_base/$part/tree/HEAD:/$i"
+ done
+ ;;
+ *)
+ echo "$gitweb_base/?p=$part"
+ echo "$gitweb_base/?p=$part;a=commitdiff;h=$hash"
+ echo "$gitweb_base/?p=$part;a=tree;h=HEAD"
+ for i in $@; do
+ [ -f "$i" ] && echo "$gitweb_base/?p=$part;a=blob;hb=HEAD;f=$i"
+ [ -d "$i" ] && echo "$gitweb_base/?p=$part;a=tree;hb=HEAD;f=$i"
+ done
+ ;;
+esac