SVN:我可以将文件的子集复制到新标签吗?

时间:2009-07-02 02:22:26

标签: svn version-control copy tags tagging

在我的repo trunk中,我有一个目录unit-tests,我想要保留我的发布标记。我一直在做的是将trunk复制到新标签,然后删除unit-tests这是确定吗?感觉不对,因为标记每个版本需要两次修改。 有没有办法从svn副本中排除目录?

E.g。我有:

/trunk/unit-tests
/trunk/dir1
/trunk/file1
/trunk/file2

我想创建:

/tags/release_123/dir1
/tags/release_123/file1
/tags/release_123/file2

我通常使用Tortoise / Eclipse客户端,但如果需要,我可以使用它。

2 个答案:

答案 0 :(得分:4)

你可以使用subversion提供的 svnmucc 程序(自SVN1.5起包含在windows build中) 这个小工具将收集多个svnactions到一个提交。但是你需要先创建目标文件夹。无法在单个事务中创建文件夹和复制内容:此处为示例:

svn mkdir -m "creating a tag" http://your.serv.er/svn/repo/tags/release_123
svnmucc cp HEAD http://your.serv.er/svn/repo/trunk/dir1 http://your.serv.er/svn/repo/tags/release_123 \
cp HEAD http://your.serv.er/svn/repo/trunk/file1 http://your.serv.er/svn/repo/tags/release_123 \
cp HEAD http://your.serv.er/svn/repo/trunk/file2 http://your.serv.er/svn/repo/tags/release_123 -m "creating tag Part II" 

您也可以使用perl / python / ruby​​绑定或svnkit(java)来完成此任务,但我无法为此提供源代码..

答案 1 :(得分:2)

我认为你不能。

但是为什么还需要删除unit-test目录呢? 它不占用存储库中的额外空间,实际上,如果删除它会占用更多空间(因为额外的提交)。

如果您担心标签的签出时间太长/太大,您可以选择不签出单元测试目录。