summaryrefslogtreecommitdiff
path: root/.zsh/func/vcsh
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2010-03-09 17:24:53 +0100
committerTobias Klauser <klto@zhaw.ch>2010-03-09 17:24:53 +0100
commit330ddb47b4752eab2dc2f824cfb078bcca70eb60 (patch)
tree90bb8fac46c600326edcce214bd9e5218966b512 /.zsh/func/vcsh
parent84930a568785e645ee04e49c58118847eabdd602 (diff)
Add vsh and baseconv functions
Diffstat (limited to '.zsh/func/vcsh')
-rwxr-xr-x.zsh/func/vcsh48
1 files changed, 48 insertions, 0 deletions
diff --git a/.zsh/func/vcsh b/.zsh/func/vcsh
new file mode 100755
index 0000000..31da22d
--- /dev/null
+++ b/.zsh/func/vcsh
@@ -0,0 +1,48 @@
+#!/bin/zsh
+#
+# func/vcsh
+#
+# set the context for vcs-home operations
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: git://git.madduck.net/etc/zsh.git
+#
+# Adapted by Tobias Klauser <tklauser@distanz.ch>
+#
+# Source repository: git://git.distanz.ch/dotfiles/zsh.git
+
+local FGIT_BASE="$HOME/src/dotfiles"
+
+if [ "${1:---help}" = '--help' ] || [ $# -gt 1 ]; then
+ echo "usage: ${0##*/} reponame" >&2
+ echo "usage: ${0##*/} -l" >&2
+ [ "$1" = '--help' ]
+ return $?
+
+elif [ "$1" = '-l' ]; then
+ for i in $FGIT_BASE/*.git; do
+ i="${i#$FGIT_BASE/}"
+ echo "${i%.git}"
+ done
+ return 0
+fi
+
+if [ ! -d "$FGIT_BASE/${1}.git" ]; then
+ echo E: no repository found for "$1" >&2
+ return 2
+fi
+
+old_GIT_DIR="${GIT_DIR:-}"
+old_GIT_WORK_TREE="${GIT_WORK_TREE:-}"
+
+export GIT_DIR="$FGIT_BASE/${1}.git"
+export GIT_WORK_TREE="$GIT_DIR/$(git config --get core.worktree)"
+
+$SHELL -i || :
+
+GIT_DIR="$old_GIT_DIR"
+[ -z "$GIT_DIR" ] && unset GIT_DIR
+GIT_WORK_TREE="$old_GIT_WORK_TREE"
+[ -z "$GIT_WORK_TREE" ] && unset GIT_WORK_TREE