从 Linux Bash 脚本中,如何验证某个目录是否在 svn 版本控制之下?我正在使用 svn 版本 1.7.9。
当我尝试以下
pushd ${WD}; svn info; popd
并检查错误代码我总是得到零,因为popd
成功了,即使svn info
返回了错误。如何以以下方式对目录执行检查?
if [ ... ]; then
echo "Directory ${WD} not under version control"
fi
答案1
将命令的返回代码存储svn
在变量中并测试:
pushd $PWD
svn info
ERR=$?
popd
if [ $ERR -ne 0 ];then
echo "Directory ${WD} not under version control"
fi
答案2
Subversion 使用一个名为的隐藏目录.svn
(就像.git
Git 一样)。
首先,一个目录不是在SVN控制下:
riemann$ if [ ! -d ".svn" ]; then echo "Directory not under version control"; fi;
Directory not under version control
riemann$
接下来,SVN 控制下的目录(Crypto++ 使用 SVN):
riemann::cryptopp$ if [ ! -d ".svn" ]; then echo "Directory not under version control"; fi;
riemann::cryptopp$
和:
riemann::cryptopp$ ls -al .*
-rw-r--r--@ 1 jwalton staff 6148 Jul 20 06:46 .DS_Store
.:
total 440904
drwx------ 462 jwalton staff 15708 Aug 10 16:00 .
drwx------ 59 jwalton staff 2006 Aug 10 15:50 ..
drwx------ 7 jwalton staff 238 Jul 17 07:41 .svn
...