sor*_*rin 0 git bash mercurial
我正在寻找一个简单的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
Run Code Online (Sandbox Code Playgroud)
当前实现的问题是它将跨越FS边界,这可能触发一些不期望的错误.
此功能已在git和hg中实现.为什么不使用他们的实现?
if git status &> /dev/null ; then
repo=git
root=$( git rev-parse --show-toplevel )
elif hg status &> /dev/null ; then
repo=hg
root=$( hg root )
else
echo Not in a repo. >&2
exit 1
fi
echo $repo "$root"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |