X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=.zsh%2Ffunc%2Fgiturl;h=8f6233cb6308b76c655cf0a2e0d34c7eb12e37b1;hb=630e225d73f2417de8e491d6b35df4ae5394654a;hp=f001308b123f1a99551b0eabcfe63143839caa06;hpb=e00e7f7a1886640cc18d114a48a1ddf75cebdfa4;p=zsh.git diff --git a/.zsh/func/giturl b/.zsh/func/giturl index f001308..8f6233c 100755 --- a/.zsh/func/giturl +++ b/.zsh/func/giturl @@ -2,7 +2,8 @@ # # 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 # Released under the terms of the Artistic Licence 2.0 @@ -10,17 +11,24 @@ # 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/*|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 ;; *) echo >&2 "E: I do not know how to translate $REMOTE into a gitweb URL." @@ -28,5 +36,24 @@ case "$REMOTE" in ;; 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/$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;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