【发布时间】:2018-09-07 02:31:20
【问题描述】:
我们将当前发布代码的图像保存在某个本地目录中,并且为了构建代码,我们使用该目录中的代码。在构建脚本中,我需要一种方法来确定图像目录中的代码是否与存储库中的当前发布分支同步。如果是这样,我将在脚本中进行 svn 更新。修订号可以以某种方式用于检测不同步情况吗?如果有怎么办?
瓦迪拉杰
【问题讨论】:
标签: svn
我们将当前发布代码的图像保存在某个本地目录中,并且为了构建代码,我们使用该目录中的代码。在构建脚本中,我需要一种方法来确定图像目录中的代码是否与存储库中的当前发布分支同步。如果是这样,我将在脚本中进行 svn 更新。修订号可以以某种方式用于检测不同步情况吗?如果有怎么办?
瓦迪拉杰
【问题讨论】:
标签: svn
svn status -u
添加工作版本和服务器过期信息。
如果目录中没有非版本化文件,那么只有当 status 命令没有返回任何内容时,它才是最新的。 否则 * 表示它不是最新的,?表示非版本化、M-修改等。
换句话说,当且仅当以下返回 0 时,它才是最新的:
svn status -u | grep -E -c "^\s+[^\?]"
【讨论】:
快速直接的方式:
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#。
【讨论】: