我有一个脚本可以将一些文件复制到项目中。这样的项目通常是Subversion工作副本,但并非总是如此。如果它是一个工作副本,我想自动将文件添加到Subversion。但是,我怎么知道该目录是Subversion工作副本的一部分?到目前为止,我检查了.svn子文件夹,但这不适用于Subversion 1.7。我只需要知道svn add files...
是否有效,不需要提取其他数据。
答案 0 :(得分:3)
只需运行svn status
。如果它不是工作副本,您将收到如下消息:
svn: warning: '.' is not a working copy
编辑:如果您担心svn status
的递归性质,您可以限制深度(取决于客户端的版本)
svn status --depth=empty
或
svn status --non-recusive
(后一种格式在最新版本的客户端中列为过时)。
答案 1 :(得分:2)
您可以使用svn info属性然后通过管道获取网址,如下所示:
svn info -R | FIND "URL:" >urlText
然后将此输出加载到另一个变量中,您可以像以下一样使用它:
set /p urlRepo= <urlText
del urlText
答案 2 :(得分:0)
你正在做一个脚本,所以...脚本形式的解决方案:)
REPO="http://repository_url"
WCDIR="dir_you_are_checking"
WCBRANCH=`svn info ${WCDIR} 2> /dev/null | grep "^URL:" | cut -d" " -f2 | sed s,${REPO}/,,`
if [ -z "${WCBRANCH}" ]
then
echo "Error: directory ${WCDIR} exists and is not part of a working copy."
exit 1
fi
# WCBRANCH will contain the WCDIR path inside repository
答案 3 :(得分:0)
该解决方案的更简单版本:
WCBRANCH=`svn info ${WCDIR} 2> /dev/null | wc -l`
if [ ${WCBRANCH} -eq 0 ]
then
echo "Error: directory ${WCDIR} exists and is not part of a working copy."
exit 1
fi