如何确定目录是否是Subversion工作副本的一部分?

时间:2011-08-24 08:08:18

标签: svn

我有一个脚本可以将一些文件复制到项目中。这样的项目通常是Subversion工作副本,但并非总是如此。如果它是一个工作副本,我想自动将文件添加到Subversion。但是,我怎么知道该目录是Subversion工作副本的一部分?到目前为止,我检查了.svn子文件夹,但这不适用于Subversion 1.7。我只需要知道svn add files...是否有效,不需要提取其他数据。

4 个答案:

答案 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