SVN多分支标记

3
我们在SVN标记方面遇到了问题。下图显示了我们的项目在SVN中的组织方式。我们使用Tortoise SVN进行检出,Visual SVN作为我们的服务器。
这是我们在SVN中组织项目的方式:
- 分支A(主要工作分支)从主干分支分支,并因此位于Branches文件夹中。该分支内有不同的模块。 - 分支B(称为RNS的特定模块)稍后从分支A分支出(这是为了进行新的增强)。 - 请注意,两个分支都不是主干。 - 在分支B上开发期间,仅在分支B上引入了一些新文件。 - 在分支A内未对RNS模块进行任何开发。
我们想要标记我们最新的工作项目版本,即包括RNS模块的Branch A。如何实现?
这是我们从SVN中检出最新工作区的方式:
- 我们检出整个项目的Branch A版本。 - 完成后,我们右键单击RNS模块,然后使用SVN-switch选项将其更新为该模块的Branch B(QUAL_RNS)版本。 - 这构成了我们的最新工作设置(黄色部分)。 - 因此,除RNS模块外的每个模块都将属于Branch A。
我们尝试从父文件夹Folder-1(使用工作副本选项)创建此最新工作设置的标记/分支,但这只是创建了一个带有Branch A的标记,而不包括RNS模块的Branch B。
更新: 我在Tortoise SVN帮助菜单中看到了以下内容:
- 您还可以在没有工作副本的情况下创建分支或标记。为此,请打开存储库浏览器。您可以将文件夹拖到新位置。您必须按住Ctrl键才能拖动以创建副本,否则文件夹将被移动,而不是复制。 - 您还可以使用右键单击文件夹并拖动它。一旦释放鼠标按钮,您可以从上下文菜单中选择是否要移动或复制文件夹。当然,要创建分支或标记,您必须复制文件夹,而不是移动它。
因此,我尝试了一下这个方法。我创建了一个新的标记文件夹,并将整个项目拖到其中(按住Ctrl键)。这似乎有效,但这会占用额外的空间(它是否会创建一个额外的副本?因为复制整个工作区花费了约5分钟(470MB),还是会创建正确的链接到存储库内的文件?)

你是否正在工作副本的“分支A”目录中执行“svn切换”操作,以切换到完整的“分支B”?如果是这样,我认为这不是正确的方法。你应该使用svn外部引用:http://svnbook.red-bean.com/en/1.6/svn.advanced.externals.html - Diego Fernández Durán
感谢您的回复。是的,我检出了A分支,然后进行了SVN切换,只是为了更新RNS模块到B分支。我还没有尝试过外部引用,因为我们使用TortoiseSVN作为GUI。我会尝试您的建议。 - Joel Abraham
1个回答

0

非常感谢您的回复。我们在Windows机器上安装了VisualSVN服务器,并在Windows中进行所有的check-in,然后将我们的代码移动到Linux盒子中。我尝试从您提供的链接中使用我的工作副本创建一个复杂的标记,但是我使用的是TortoiseSVN exe文件,因为我是在Windows上工作。 (例如:TortoiseProc.exe copy my-working-copy
http://svn.example.com/repos/calc/tags/mytag
-m "Tag my existing working copy state.") 我不确定我是否做得对,或者这在Windows中是否受支持。
- Joel Abraham
1
我认为你缺乏对Subversion的基本理解。你试图在不了解基础知识的情况下使用图形客户端。请阅读http://svnbook.red-bean.com/en/1.6/。 - Diego Fernández Durán

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接