我怎么知道我的工作副本是否不同步

时间:2011-06-29 05:42:34

标签: svn

我们在一些本地目录中保留当前版本代码的图像,并且为了构建代码,我们使用此目录中的代码。在构建脚本中,我需要一种方法来确定image目录中的代码是否与存储库中的当前版本分支同步。如果是这样,我将在脚本中进行svn更新。修订号是否可以某种方式用于检测不同步条件?如果是这样的话?

Vadiraj

2 个答案:

答案 0 :(得分:12)

svn status -u

添加工作修订版和服务器过时信息。

如果目录中没有非版本化文件,那么仅当status命令没有返回任何内容时它才是最新的。 否则*意味着它不是最新的,?表示非版本化,M修饰等。

换句话说,当且仅当以下内容返回0时,它才是最新的:

svn status -u | grep -E -c "^\s+[^\?]"

答案 1 :(得分:0)

快速直接的方式:

repoVersion="$(svn status -u --depth empty <myWCdir> | awk '{print $NF}')"
wcVersion="$(svn info --show-item revision <myWCdir>)"

然后,您可以将这两个数字进行比较,如下所示:

if [[ $repoVersion -eq $wcVersion ]]; then
    echo "<myWCdir> is up to date"
else
    echo "<myWCdir> is out of date"
fi

注意:简单的svn status -u是一种方法。如果任何内容(在任何深度)发生更改,SVN都会破坏目录的rev#。