Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CVS/SVN分支和标记的最佳实践_Svn_Version Control_Branch_Tagging - Fatal编程技术网

CVS/SVN分支和标记的最佳实践

CVS/SVN分支和标记的最佳实践,svn,version-control,branch,tagging,Svn,Version Control,Branch,Tagging,我将负责决定如何在我们的CVS/SVN回购中进行标记分支 是否有任何文献可以帮助我理解使用CVS的最佳方法?分支/标记等 感谢大家。通常被认为是CVS的指南。我在FreeBSD项目工作10多年的个人经历是:尽可能快地切换到其他方面。CVS是面向文件的,而不是面向快照/变更集的,这使得分支之间的合并相当痛苦。无论如何,CVS的分支是痛苦的 有关CVS的资源,请参阅 如果您想谈论SVN,我建议您使用SVN本身和它。合理的经验法则: 标记每个构建(即,每个构建都有一个构建编号——您可以发送给测试人员

我将负责决定如何在我们的CVS/SVN回购中进行标记分支

是否有任何文献可以帮助我理解使用CVS的最佳方法?分支/标记等


感谢大家。

通常被认为是CVS的指南。

我在FreeBSD项目工作10多年的个人经历是:尽可能快地切换到其他方面。CVS是面向文件的,而不是面向快照/变更集的,这使得分支之间的合并相当痛苦。无论如何,CVS的分支是痛苦的

有关CVS的资源,请参阅


如果您想谈论SVN,我建议您使用SVN本身和它。

合理的经验法则:

  • 标记每个构建(即,每个构建都有一个构建编号——您可以发送给测试人员或任何其他人的任何内容)
  • 每次需要分支时都要分支
通常,您需要对发布的版本进行分支,以便测试和发布补丁。您可能有其他的分支原因


使用Subversion肯定会更好。

我建议您在Windows上使用SVN,在Linux上使用Git。不要使用CVS,因为这太可怕了

这是你首先需要的吗


标记每个公共构建(发布)。分支是出于某种原因(例如,另一种开发方式)的复制主干。每次需要分支存储库时:)

我建议您阅读两本关于SVN和CVS的实用程序员书籍,分别称为“和”

这两个都是优秀的资源,都是描述你想做什么的食谱,而不是前面提到的书中对技术本身的具体描述

干杯


Rob

封面分支和合并中的后续条目。

您应该离开CVS。CVS很旧,在分支/标记方面不是很快(分支/标记的创建与项目中文件的数量成线性关系)

你应该首先考虑你的分支策略:你想拥有一个

  • 稳定树干
  • 特征分支
  • 开发人员分支
  • 不稳定的主干/释放分支
  • 站台支路
这在很大程度上取决于您的项目和开发理念

如果你想使用SVN,你真的必须考虑你的存储库布局,因为几乎所有的软件项目都是基于模块的,你应该找到一个可以轻松标记所有需要的模块的结构。SVN及其基于文件夹的分支/标记方法不容易实现这一要求


这意味着应该很清楚,多存储库布局更难维护稳定的标记系统。我更喜欢“标记所有”方法,但这是我个人的选择。

我建议使用GIT,因为标记/分支过程非常容易使用。使用SVN(特别是在windows上)的好处是GUI工具的数量和windows shell集成


我还支持关于SVN的实用程序员书籍的推荐。

我相信这是源于编码恐惧:

Chris Birmele关于分支和合并的论文是我对这项重要的源代码控制任务的最好介绍。分支的方法有几十种,但没有一种方法是正确的。熟悉你的选择,这样你就知道每个选择的利弊


如果您想要subversion的10人入门:

将“主干”视为您发展的完整历史。任何被释放的东西都必须在某个时刻以某种形式出现在主干中

在复杂的开发任务中使用开发分支(主干中的分支)。任务完成后,使用“重新集成合并”将更改从分支拉入主干。通过这种方式,您可以对主干进行一些特定的提交,而不是许多与同一任务相关的提交。不再需要时删除这些开发分支。将它们命名为“FeatureX”

使用版本分支(同样来自主干)来管理预定发布给客户/部署到现场的营销版本。版本是主干中修订的子集。若要使用它们,请在适当的修订处从trunk分支(可能不是head),手动将trunk中的修订记录为合并到该分支中,合并到trunk中所需的任何其他修订(仅从trunk)。不要直接开发到版本分支上,只从主干合并-尽管合并可能需要额外的工作才能使其与版本兼容。名称如“版本2.4”

每当生成发布给客户或部署到live中的构建或修补程序时,从版本分支创建特定的标记。名称如“2.4.1”、“2.4.2”等

通过这种方式,您可以使用subversion的合并跟踪(版本1.5及更高版本)精确地查看每个标签中每个版本的内容。为此,获取标记或版本分支的工作副本,并执行“svn mergeinfo--show revs merged c:\workingcopy”


这对于审核员、自动生成的发行说明、测试人员以及您自己对到底有哪些内容的信心都是非常好的。使用带有这些信息的自动生成的矩阵,可以一眼看到不同版本包含的内容。

几年前,当我第一次访问真正的SCM(从源代码安全)时,我发现以下内容很有帮助-当时perforce有一份白皮书,我认为:


阅读以下内容:

好吧,使用什么源代码管理系统并不重要,它们基本上都遵循某种形式的主干/分支/标记结构。即使是分布式模型,存储库的设置也会反映这一点


有一个非常简单的解释可以让您开始。

标记每个构建应该是“标记每个发布”?充其量,每个提交版本都有一个标记,但是每个修订版都有一个标记没有多大意义。我认为最好说:标记每个公共版本。为测试人员或用户构建远离开发人员的产品