如何将SVN标签展开为分支提交?

时间:2013-11-12 10:07:16

标签: svn continuous-integration

我有一个项目运行如下布局:

/my_proj/trunk/
/my_proj/tags/1.0.0/
/my_proj/tags/1.0.1/
/my_proj/tags/1.0.2/
/my_proj/tags/1.0.3/

所以在tags dir中有冻结的分支准备释放。

现在我们推出了一个只能扫描单个目录的CI服务器,与tags中的许多目录不同。

因此可以将tags展开为一系列提交,例如:

/my_proj/branch/release
  commit 1: "ver 1.0.0"
  commit 2: "ver 1.0.1"
  commit 3: "ver 1.0.2"
  commit 4: "ver 1.0.3"

1 个答案:

答案 0 :(得分:0)

这个怎么样(没有经过充分测试):

从你工作的某个地方,在bash

svn copy ^/trunk@1 ^/branches/rolling -m "Creating a rolling release branch"
svn co ^/branches/rolling
cd rolling
svn list ^/tags | xargs -I {} sh -c \
 "svn merge --accept theirs-full --ignore-ancestry ^/tags/{}; \
  svn ci -m \"ver {}\" \
  svn update \
 "

这是一个伪自动脚本。 如果你的标签版本很少,你最好逐个运行命令(即不经过xargs)