我正在寻找一个简单的 bash 脚本,我可以用它来检测我当前所在的 scm 存储库(git 或 hg)(当前目录)。
主要逻辑是从当前目录开始查找第一个.git
或.hg
目录。正确地说,逻辑应该在文件系统边界处停止。
现在的主要问题似乎是文件系统边界的检测。
当前实施:
LOC=`pwd`
while [ $LOC != '/' ]; do
if [ -d "$LOC/.git" ]; then
require_clean_work_tree_git
break
elif [ -d "$LOC/.hg" ]; then
require_clean_work_tree_hg
break
else
LOC=`dirname $LOC`
fi
done
当前实现的问题是它会跨越 FS 边界,这可能会触发一些不希望的错误。