【发布时间】:2025-12-13 18:00:02
【问题描述】:
我们正面临 SVN 标记的问题。下图显示了我们的项目在 SVN 中是如何组织的。我们使用 Tortoise SVN 进行结帐,并使用 Visual SVN 作为我们的服务器。
这就是我们的项目在 SVN 中的组织方式
- 分支 A(主要工作分支)从主干分支出来,因此驻留在 Branches 文件夹中。此分支中有不同的模块
- B 分支(称为 RNS 的特定模块)稍后从分支 A 分支(这是为了新的增强功能)
- 请注意,两个分支都不是主干。
- B 分支开发过程中,引入了一些新文件,仅在 B 分支上
- 没有对分支 A 内的 RNS 模块进行开发。
我们想标记我们最新工作项目的一个版本,即包含 RNS 模块的分支 B 的分支 A。如何实现?
这是我们从 SVN 签出最新工作区的方式
- 我们检查了整个项目的 Branch A 版本。
- 完成后,我们右键单击 RNS 模块,然后使用 SVN 切换选项将其更新为该模块的 Branch B(QUAL_RNS) 版本。
- 这是我们最新的工作设置(黄色)。
- 所以除了RNS模块之外的每个模块都属于Branch A。
我们尝试从父文件夹 –Folder-1(带有工作副本选项)创建此最新工作设置的标签/分支,但这只是创建了一个带有分支 A 的标签,不包括 RNS 模块的分支 B .
更新: 我在 Tortoise SVN 帮助菜单中看到了这个
- 您也可以在没有工作副本的情况下创建分支或标签。为此,请打开存储库浏览器。您可以将文件夹拖到新位置。您必须在拖动时按住 Ctrl 键以创建副本,否则文件夹将被移动,而不是被复制。
- 您也可以用鼠标右键拖动文件夹。释放鼠标按钮后,您可以从上下文菜单中选择是否要移动或复制文件夹。当然,要创建分支或标签,您必须复制文件夹,而不是移动它。
所以我用工作副本尝试了这个。我创建了一个新的标签文件夹并按住 Ctrl 键将我的整个项目拖到它上面。这似乎可行,但这是否会占用额外的空间(是否会创建额外的副本,因为复制整个工作区大约需要 5 分钟(470MB))还是会创建到存储库内文件的正确链接?
【问题讨论】:
-
您是否将“分支 A”的工作副本中的目录“svn 切换”到完整的“分支 B”?如果你这样做,我认为这不是正确的方法。您必须使用 svn 外部:svnbook.red-bean.com/en/1.6/svn.advanced.externals.html
-
感谢您的回复。是的,我检查了分支 A,然后为 RNS 模块进行 SVN 切换以将其更新到分支 B。我还没有尝试外部,因为我们使用 TortoiseSVN 作为 GUI。我会试试你的建议。
标签: svn tags tortoisesvn visualsvn-server