【发布时间】:2016-08-11 13:02:01
【问题描述】:
我在shellscript中设置了一个自动编译过程,我只是想弄清楚主干是否没有收到上次标记的任何提交...有没有办法用简单 em> svn 命令行,无需读取和比较历史,“脚本”还是手动?
【问题讨论】:
我在shellscript中设置了一个自动编译过程,我只是想弄清楚主干是否没有收到上次标记的任何提交...有没有办法用简单 em> svn 命令行,无需读取和比较历史,“脚本”还是手动?
【问题讨论】:
在 SVN 中,标签既不是修订版的别名,也不是不可变的。相反,它只是一个副本!可以在创建标签后对其进行修改。所以唯一的方法是比较两条路径的修订号。 This 问题展示了如何获取它们。
【讨论】:
感谢@ceving,这是一个很好的示例,可以检查项目树是否是最新的标签。
假设项目设置如下:
rootdev/prj1/
rootdev/prj1/trunk
rootdev/prj1/tags
脚本:
#!/bin/bash
tabs 30 # be fancy
function last-rev ()
{
svn log "$1" -r HEAD:1 -l 1 -q | grep -ao '^r\S*'
}
find rootdev -ipath "*tags" |
while read tags
do
module="$(dirname $tags)"
modulename="$(basename $module)"
lasttag="$(ls -1 $tags | tail -n 1)"
lastrev=$(last-rev "$module")
lasttagrev=$(last-rev "$tags/$lasttag")
echo -ne "$modulename\t: $lasttag\t$lasttagrev/$lastrev "
[[ "$lastrev" == "$lasttagrev" ]] && echo "[UPTODATE]" || echo "[OUTDATED]"
done
输出:
DateUtils : 1.0.0 r116/r116 [UPTODATE]
ThisUtils : 1.0.0 r116/r116 [UPTODATE]
SomeUtils : 1.2.1 r125/r125 [UPTODATE]
ThatUtils : 1.0.1 r101/r101 [UPTODATE]
NotUtils : 1.0.0 r101/r128 [OUTDATED]
WhyUtils : 1.2.0 r130/r130 [UPTODATE]
【讨论】: