]>
git.madduck.net Git - etc/zsh.git/blobdiff - .zsh/func/giturl
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
#
# Copyright © 2010 martin f. krafft <madduck@madduck.net>
# Released under the terms of the Artistic Licence 2.0
#
# Copyright © 2010 martin f. krafft <madduck@madduck.net>
# Released under the terms of the Artistic Licence 2.0
+# Contributions from Yaroslav O. Halchenko <debian@onerussian.com>
#
# Source repository: git://git.madduck.net/etc/zsh.git
#
#
# Source repository: git://git.madduck.net/etc/zsh.git
#
-local remote; remote=$(git config --get remote.origin.url)
+local branch remote remote_name
+branch=$(git symbolic-ref -q HEAD); branch="${branch#refs/heads/}"
+# Obtain remote which current branch tracks, origin if not known
+remote_name=$(git config branch.$branch.remote || echo origin)
+remote=$(git config --get remote.$remote_name.url)
-local part gitweb_base oldstyle
-oldstyle=0
+local part gitweb_base style commitkw
+style=gitweb
+commitkw=commitdiff # keyword for commit -- differ for github
+argssep=: # separator for arguments of the query
case "$remote" in
madduck:pub/*|ssh://git.madduck.net/madduck/pub/*)
gitweb_base=http://git.madduck.net/v
case "$remote" in
madduck:pub/*|ssh://git.madduck.net/madduck/pub/*)
gitweb_base=http://git.madduck.net/v
part="${part#ssh://git.madduck.net/madduck/pub/}"
part="${part%.git}.git"
;;
part="${part#ssh://git.madduck.net/madduck/pub/}"
part="${part%.git}.git"
;;
- debian:*|*://git.debian.org/git/*|*@git.debian.org/git/*)
+ debian:*|*://git.debian.org/git/*|*://alioth.debian.org/git/*|* @git.debian.org/git/*)
gitweb_base=http://git.debian.org
part="${remote#debian:}"
part="${part#*://git.debian.org/git/}"
gitweb_base=http://git.debian.org
part="${remote#debian:}"
part="${part#*://git.debian.org/git/}"
+ part="${part#*://alioth.debian.org/git/}"
part="${part#*@git.debian.org/git/}"
part="${part%.git}.git"
part="${part#*@git.debian.org/git/}"
part="${part%.git}.git"
+ style=gitweb_old
+ ;;
+ github:*|*://github.com/*|*@github.com[/:]*)
+ gitweb_base=http://github.com
+ part="${remote#github:}"
+ part="${part#*://github.com/}"
+ part="${part#*@github.com[:/]}"
+ part="${part%.git}"
+ style=github
+ commitkw=commit
+ argssep=
- echo >&2 "E: I do not know how to translate $REMOTE into a gitweb URL."
+ echo >&2 "E: I do not know how to translate $remote into a gitweb URL."
local hash
hash=$(git rev-parse HEAD)
local hash
hash=$(git rev-parse HEAD)
-case "$old style" in
- 0 )
+case "$style" in
+ gitweb|github )
echo "$gitweb_base/$part"
echo "$gitweb_base/$part"
- echo "$gitweb_base/$part/commitdiff /$hash"
+ echo "$gitweb_base/$part/$commitkw /$hash"
echo "$gitweb_base/$part/tree/HEAD"
for i in $@; do
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"
+ [ -f "$i" ] && echo "$gitweb_base/$part/blob/HEAD${argssep} /$i"
+ [ -d "$i" ] && echo "$gitweb_base/$part/tree/HEAD${argssep} /$i"
echo "$gitweb_base/?p=$part"
echo "$gitweb_base/?p=$part;a=commitdiff;h=$hash"
echo "$gitweb_base/?p=$part;a=tree;h=HEAD"
echo "$gitweb_base/?p=$part"
echo "$gitweb_base/?p=$part;a=commitdiff;h=$hash"
echo "$gitweb_base/?p=$part;a=tree;h=HEAD"