TortoiseSVN:将一个分支的内容复制到另一个分支

时间:2010-12-17 16:26:47

标签: tortoisesvn labview

我正在使用没有外部Subversion服务器的TortoiseSVN来管理LabView源(即大量不断变化的二进制文件)。

我想拥有一个存储库的“beta”分支,任何人都可以订阅并获取每日更新。我想这与通常的测试版系列有不同的分支,但它适合这个项目。

将特定版本的trunk分支的内容复制到beta分支的最佳/最简单方法是什么?基本上我想要做的是删除beta的旧内容并插入新内容。我想,删除+添加会起作用,但它显然不是最理想的。合并不是一种选择,除非我能让Tortoise自动解决主干有利的所有冲突,包括删除文件。

更新:有几个人问我为什么不想删除+添加。我想要一个更清洁的选择。

  1. 此方法导致测试版树的一半更新为“消灭最后一次修订版”。
  2. 更新不是原子的,所以有人可以拿起一个空的版本。
  3. 我没有尝试过,但是beta不是一个合适的分支。修订日志是否会跟踪多个修订,因为它每次都是一个“新”文件?
  4. 更新2: svn在提交之前允许任意命令,但我无法让Tortoise以这种方式工作。选择“删除”后,存根目录仍然保留,直到我提交,此时我可以重新填充分支。当旧目录和新标签修订版中都存在删除目录时,需要有一种方法可以取消标记。

3 个答案:

答案 0 :(得分:2)

  

除非可以,否则合并不是一种选择   让Tortoise自动解决   所有冲突都有利于,   包括删除文件。

我不知道TortoiseSVN,但如果您安装了command line client,则可以执行以下操作将最新的trunk更改合并到beta分支:

cd c:/path/to/my/working/copy/of/beta/branch
svn merge file:///c:/path/to/my/repository/trunk --accept theirs-full
svn commit -m "merged latest trunk changes to beta branch"

--accept theirs-full选项可以使用主干的版本来解决所有冲突。

这有一些优点:subversion将执行representation sharing,因此存储在两个分支上的文件不会占用存储库中的额外空间。此外,当用户更新其beta工作副本时,只需更改已更改的文件。

答案 1 :(得分:1)

SVN是事务性的 - 删除和复制(不添加!)不会有问题。 beta将是一个合适的分支(或更好的标签)

答案 2 :(得分:0)

为什么不删除beta / *然后将trunk / *复制到beta /?