我在shellscript中设置了一个自动编译过程,我只是想知道主干是否没有从最后一个标记中收到任何提交...有没有办法用简单执行它 svn命令行,无需读取和比较历史记录,"脚本"还是手动?
答案 0 :(得分:2)
在SVN中,标签既不是修订的别名,也不是不可变的。相反,它只是一个副本!可以在创建标签后修改标签。所以唯一的方法是比较两条路径的修订号。 This问题显示了如何获取它们。
答案 1 :(得分:0)
感谢@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]