2012-06-18 69 views
3

我们正面临SVN标记问题。下图显示了我们的项目是如何在SVN内部组织的。我们使用Tortoise SVN来完成我们的结帐和Visual SVN作为我们的服务器。SVN多分支标记

SVN File Organization

这是怎么了我们的项目中SVN

  • 科A(主要工作分支)分支树干组织,因此驻留在分行内folder.There是这里面不同的模块分支
  • 分支B(一种称为RNS的特定模块)稍后分支A分支(这是为了一个新的增强功能)
  • 请注意,两个分支都不是主干。
  • 在对分行A的发展,一些新的文件相继出台,只有分行A
  • 没有发展是RNS模块上进行A.科内

我们想标记一个版本我们的最新工作项目,即包含RNS模块B分支的分支A,如何实现?

这就是我们如何结帐我们最新的工作区从SVN

  • 我们签分公司整个项目的一个版本。
  • 完成后,我们右键单击RNS模块,然后使用SVN-switch选项,我们将其更新为此模块的分支B(QUAL_RNS)版本。
  • 这构成了我们最新的工作设置(黄色)。
  • 所以除了RNS模块每个模块将属于科A.

我们试图做从父文件夹这个最新的工作设置的创建标签/分支 - 文件夹-1(与工作副本选项),但这只是创建了一个分支A的标签,不包括RNS模块的分支B.

UPDATE: 我的乌龟SVN帮助菜单

  • 您还可以创建一个分支或标记看到这个而不是在工作副本。为此,请打开存储库浏览器。你可以在那里拖动文件夹到一个新的位置。您必须在按住Ctrl键的同时拖动以创建副本,否则文件夹会移动,而不会被复制。
  • 您也可以用鼠标右键拖动文件夹。松开鼠标按钮后,您可以从上下文菜单中选择是否要移动或复制文件夹。当然,要创建分支或标签,您必须复制该文件夹,而不是移动它。

所以我尝试了这个工作副本。我创建了一个新的标签文件夹,并将我的整个项目按住Ctrl键。这似乎有效,但是这是否会占用额外的空间(是否会创建额外的副本,因为复制整个工作空间需要大约5分钟(470MB)),还是会创建与存储库中文件的正确链接?

+0

“svn切换”工作副本“分支A”内的目录到完整的“分支B”?如果你这样做,我认为是不正确的。你必须使用svn externals:http://svnbook.red-bean.com/en/1.6/svn.advanced.externals.html –

+0

谢谢你的回复。是的,我检查分支A,然后为RNS模块做一个SVN切换,将其更新到分支B.我没有尝试外部分支,但导致我们使用TortoiseSVN作为GUI。我会给你一个建议。 –

回答

0

你必须做正常或sparse工作拷贝,并与工作副本标记为http://svnbook.red-bean.com/en/1.6/svn.branchmerge.tags.html#svn.branchmerge.tags.mkcomplex

解释在TortoiseSVN(或命令行),你可以做全库的标签(从做根),但这不是推荐的,因为它可能会干扰某些工具在标准布局中转发的行为。

+0

非常感谢您的回复。我们在Windows机器上安装了VisualSVN服务器,并在Windows中执行所有签入操作,然后将我们的代码移至Linux机器中。我试图从你提到的链接的工作副本中创建一个复杂的标签,但我使用了TortoiseSVN exe文件,就像我在windows上工作一样。 (例如:TortoiseProc.exe复制我的工作拷贝\ http://svn.example.com/repos/calc/tags/mytag \ -m“标记我现有的工作拷贝状态。”) 我不是确定我是否正确地做,或者如果这不被Windows支持。 –

+1

我认为你对Subversion缺乏一些基本的理解。您正在尝试使用图形客户端而不了解基础知识。请阅读http://svnbook.red-bean.com/en/1.6。 –