我目前在我的SVN-repository中进行了以下设置:
-Root
--ProjectA
----trunk
----tags
----branches
--ProjectB
----trunk
----tags
----branches
--ProjectPool
----projectA
----projectB
ProjectPool包含ProjectA和ProjectB的特定标记 .
现在,ProjectPool中的标签不时发生变化 . 这意味着ProjectA的特定主干版本已提交,我想从此修订版创建一个副本到Root / ProjectPool / projectA . 新标记应替换旧标记,但应该有可用的历史记录 .
它就像在我的电脑上有一个分支,我永远不会改变它,并不时将主干合并到它 . 但它应该完全在存储库中完成 . (无需登记/结账等)
这将允许我查看Root / ProjectPool / projectA的历史记录并查看它的变化 . 一种高级修订历史 .
UPDATE:
对不起,我忘了问一个明确的问题 - .-
在查看到目前为止已经到达的答案之后,我会说ProjectPool中的项目副本是原始项目的分支 . 然后我可以在我需要ProjectPool中的新版本的时候将它们从trunk合并 .
现在的问题是,如果有办法合并"online",则无需先创建工作副本 .
2 回答
Tags
是里程碑,它们不应该改变 . 您应该在每个版本上创建一个新标记 .你需要的是 branch
ProjectA
ProjectPool
,你可以重复地与 trunk 的 trunk 合并 . 有这样的事情参考:http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.merge.html
看起来你已经完成了你的目录结构 . 如果可能的话,我建议你遵循这个结构 .
您可以在
tag
中发布ProjectA和ProjectB . 更新的发展将在trunk
继续 . 对于任何侧面开发或现场发布,请在branches目录中创建branch
. 分支完成后,将其合并回主干 . 这样,trunk
将始终反映所有修订和更改 . 而且,这更方便(和传统) .希望这可以帮助 .
你不知道你是否知道
merge
子命令,但这是你需要的那个:特别注意
--accept
参数;你需要它来获得自动冲突解决方案:我还建议阅读Subversion书中的Branching and merging章节 .