#
# func/giturl
#
-# a convenient way to display the gitweb URL of a commit-ish
+# A convenient way to display the gitweb URL of a commit-ish, as well as the
+# base URL and tree. Also for each argument, the tree or blob URL is printed.
#
# Copyright © 2010 martin f. krafft <madduck@madduck.net>
# Released under the terms of the Artistic Licence 2.0
local part gitweb_base oldstyle
oldstyle=0
case "$remote" in
- madduck:pub/*)
+ madduck:pub/*|ssh://git.madduck.net/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
;;
*)
hash=$(git rev-parse HEAD)
case "$oldstyle" in
- 0) echo "$gitweb_base/$part/commitdiff/$hash";;
- *) echo "$gitweb_base/?p=$part;a=commitdiff;h=$hash";;
+ 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