diff options
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 +} |