diff options
author | Peter Palfrader <peter@palfrader.org> | 2009-06-27 10:33:51 +0000 |
---|---|---|
committer | weasel <weasel@bc3d92e2-beff-0310-a7cd-cc87d7ac0ede> | 2009-06-27 10:33:51 +0000 |
commit | cab4384bdb27f01a340323312cbcd8129d8d0569 (patch) | |
tree | bb41bbea0ed81e16ce91b959126319aa642fd607 /zshfunc/vcs-info/VCS_INFO_detect_by_dir | |
parent | 9b19b5b9a1aae828101c901eee39491765ea4603 (diff) |
Add vcs-info
git-svn-id: svn+ssh://asteria.noreply.org/svn/weaselutils/trunk@398 bc3d92e2-beff-0310-a7cd-cc87d7ac0ede
Diffstat (limited to 'zshfunc/vcs-info/VCS_INFO_detect_by_dir')
-rw-r--r-- | zshfunc/vcs-info/VCS_INFO_detect_by_dir | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/zshfunc/vcs-info/VCS_INFO_detect_by_dir b/zshfunc/vcs-info/VCS_INFO_detect_by_dir new file mode 100644 index 0000000..e0e7da3 --- /dev/null +++ b/zshfunc/vcs-info/VCS_INFO_detect_by_dir @@ -0,0 +1,22 @@ +VCS_INFO_detect_by_dir() { #{{{ + local dirname=$1 + local basedir="." realbasedir + + realbasedir="$(VCS_INFO_realpath ${basedir})" + while [[ ${realbasedir} != '/' ]]; do + if [[ -n ${vcs_comm[detect_need_file]} ]] ; then + [[ -d ${basedir}/${dirname} ]] && \ + [[ -e ${basedir}/${dirname}/${vcs_comm[detect_need_file]} ]] && \ + break + else + [[ -d ${basedir}/${dirname} ]] && break + fi + + basedir=${basedir}/.. + realbasedir="$(VCS_INFO_realpath ${basedir})" + done + + [[ ${realbasedir} == "/" ]] && return 1 + vcs_comm[basedir]=${realbasedir} + return 0 +} |