SVN中的标签和分支有什么区别?

Mac*_*iej 55 svn tortoisesvn

我和SVN Branches和TRUNK合作多年,但从未使用过TAG

有人可以建议那些主要区别是什么?标记的主要目的是什么?

Jon*_*ter 66

这是来自http://svnbook.red-bean.com/en/1.5/svn.branchmerge.tags.html

但是等一下:这个标签创建过程不是我们用来创建分支的过程吗?是的,事实上,确实如此.在Subversion中,标签和分支之间没有区别.两者都只是通过复制创建的普通目录.就像分支一样,复制目录是"标记"的唯一原因是因为人类决定以这种方式对待它:只要没有人提交到目录,它就永远是快照.如果人们开始承诺,它就会变成一个分支.

从技术上讲,它与分支相同,但在概念上我们将其视为快照.在我的svn存储库中,我知道分支将包含可能已经或可能没有合并到主干中的大型功能,但我使用标记仅标记发布版本.


Dav*_*haw 24

唯一的区别是你使用它们,它们是相同的.

您可以在分支机构中开发针对主干的不同版本代码的工作.

标签用于"标记"版本.假设我只在行李箱上工作.当我向客户发送V1时,我为它创建了一个"V1标签".然后我在V2上工作.当客户遇到V1问题时,我可以签出标签并开始在与客户完全相同的版本上调试问题.你可以检查一个标签,但你不应该.如果您需要执行V1.1版本,则可以使用与V1标记相同的版本创建分支,并检查修复程序,并在将其作为V1.1发布时对其进行标记.


ian*_*tor 8

"Trunk"和"Branches"通常用于活动和当前开发.它是用户提交/签出文件的位置.通常是发生大量活动的地方.

另一方面,"标签"通常用于创建开发的快照和里程碑.对于您的团队来说,在Tag文件夹上进行任何提交/签出并不是很理想.

以下是标签适用性的两个示例:

  1. 分支归档 - 当发布或功能分支完成或完全废弃时,您通常会删除分支,这将有效地将其隐藏在HEAD修订版中.有些人通常不会删除这些文件夹进行存档,因为他们更愿意查看所有版本/项目.这虽然可能导致分支树难以导航.这就是为什么最好只在分支文件夹的HEAD reivision中保留活动和正在运行的项目版本和功能.您可以创建这些已归档分支的最新修订的标记副本,以便您仍可以在HEAD修订版中看到它们.这样,您可以在分支存档之前快速创建分支的最新修订版本,并使分支树中的内容保持整洁.

  2. 保持里程碑 - 项目通常有很多发展阶段.Dev,UT,QA,pre-QA,post-QA,BAT,post-BAT,PROD,pre-PROD,post-PROD.您可以使用标签在每个重要阶段制作开发快照,而不是依赖于修订号,日期或注释.

标签可以对组织事物有很大帮助,但有时候也会混乱.命名标记文件夹的标准命名约定很重要.