3

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

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

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

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

  1. 这种方法导致对 beta 树的一半更新被“清除最后一个版本”。
  2. 更新不是原子的,因此有人可以选择一个空版本。
  3. 我没有尝试过,但beta不会是一个合适的分支。修订日志是否会跟踪多个修订,因为它每次都是“新”文件?

更新 2: svn在提交之前允许任何任意命令,但我无法让 Tortoise 以这种方式工作。选择“删除”后,存根目录仍然保留,直到我提交,此时我可以重新填充分支。当旧标签修订版和新标签修订版中都存在目录时,需要有一种方法可以取消标记要删除的目录。

4

3 回答 3

2

除非我能让 Tortoise 自动解决所有有利于主干的冲突,包括删除文件,否则合并不是一个选项。

我不了解 TortoiseSVN,但如果您安装命令行客户端,您可以执行以下操作以将最新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 将进行表示共享,因此存储在两个分支上的文件不会占用存储库中的额外空间。此外,当用户更新他们的beta工作副本时,只有被更改的文件需要通过网络传输。

于 2010-12-19T21:43:55.260 回答
1

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

于 2010-12-17T23:14:35.590 回答
0

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

于 2010-12-17T16:38:10.140 回答