我与SVN Branches和TRUNK合作多年,但从未与TAG合作
有人可以建议这些之间的主要区别是什么? 标记的主要目的是什么?
答案 0 :(得分:64)
这是http://svnbook.red-bean.com/en/1.5/svn.branchmerge.tags.html
但是等一下:这个标签创建程序不一样 我们用来创建分支的程序?是的,事实上,确实如此。在 Subversion,标签和分支之间没有区别。两者都是 只是通过复制创建的普通目录。就像 分支,复制目录是“标记”的唯一原因是因为 人类决定以这种方式对待:只要没有人 提交到目录,它永远是一个快照。如果有人 开始承诺,它成为一个分支。
从技术上讲,它与分支相同,但从概念上讲,我们将其视为快照。在我的svn存储库中,我知道分支将包含可能已经或可能没有合并到主干中的大型功能,但我使用标签仅标记发布版本。
答案 1 :(得分:22)
唯一的区别在于你使用它们,它们是相同的。
您可以在分支机构中开发针对主干的不同版本代码的工作。
标签用于“标记”版本。假设我只在行李箱上工作。当我向客户发送V1时,我为它创建了一个“V1标签”。然后我在V2上工作。当客户遇到V1问题时,我可以签出标签并开始在与客户完全相同的版本上调试问题。你可以签入一个标签,但你不应该。如果您需要执行V1.1版本,则可以使用与V1标记相同的版本创建分支,并检查修复程序,并在将其作为V1.1发布时对其进行标记。
答案 2 :(得分:8)
“Trunk”和“Branches”通常用于活动和当前开发。它是用户提交/签出文件的位置。通常会发生很多活动。
另一方面,“标签”通常用于创建开发的快照和里程碑。对于您的团队来说,在标记文件夹上进行任何提交/签出都不是很理想。
以下是标签适用性的两个例子:
分支归档 - 当发布或功能分支完成或完全废弃时,您通常会删除分支,这将有效地将其隐藏在HEAD修订版中。有些人通常不会删除这些文件夹进行存档,因为他们更愿意查看所有版本/项目。这虽然可能导致分支树难以导航。这就是为什么最好只在分支文件夹的HEAD reivision中保留活动和正在运行的项目版本和功能。您可以创建这些已归档分支的最新修订的标记副本,以便您仍可以在HEAD修订版中看到它们。这样,您可以在分支存档之前快速创建分支的最新修订版本,并使分支树中的内容保持整洁。
保持里程碑 - 项目通常有很多发展阶段。 Dev,UT,QA,pre-QA,post-QA,BAT,post-BAT,PROD,pre-PROD,post-PROD。您可以使用标签在每个重要阶段制作开发快照,而不是依赖于修订号,日期或注释。
标签可以对组织事物有很大帮助,但有时候也会混乱。为命名标记文件夹提供标准命名约定非常重要。
答案 3 :(得分:2)
标签和分支在技术上是等同的。不同之处在于它们通常如何使用。
您可以使用分支制作可编辑的代码副本,以便您可以同时开发稳定的副本。
您可以使用标记制作代码的只读副本,以便以后方便地获取该代码。以下是每日构建的使用方法。每个每日构建只创建一个名称包含该内部版本号的标记。一旦你需要在很久以前获得它的源代码(例如,重现一个bug),你只需从那个标签中导出它们。