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

时间:2009-01-21 15:03:35

标签: svn version-control branch tagging

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

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

感谢

13 个答案:

答案 0 :(得分:22)

我在FreeBSD项目中担任CVS十多年的个人经历是:尽可能快地切换到别的东西。 CVS是面向文件而不是面向快照/变更集,这使得在分支之间合并相当痛苦。无论如何,分支机构对CVS很痛苦。

关于CVS的资源,请参阅CVS Home

如果您想谈论SVN,我建议SVN Book本身和question

答案 1 :(得分:6)

我建议阅读关于SVN和CVS的两本实用程序员书籍“Pragmatic Version Control Using CVS”和“Pragmatic Version Control Using Subversion”。

两者都是优秀的资源,充满了描述你想做什么的食谱,而不是前面提到的书中技术本身的细节描述。

HTH

欢呼声,

罗布

答案 2 :(得分:5)

明智的经验法则:

  • 标记每个版本(即,每个版本都带有版本号 - 您可能发送给测试人员或其他任何人的任何内容)。
  • 每次需要分支时,
  • 分支。

通常您需要分支已发布的版本,以便您可以测试和发布补丁。您可能还有其他分支原因。

你对Subversion肯定会更好。

答案 3 :(得分:5)

我建议你在Windows上使用 SVN ,在Linux上推荐 Git 。不要使用CVS,这很可怕。

SVN Book是您首先需要的。

标记每个公共构建(发布)。由于某种原因,分支机构是一个复制中继线 - 例如另一种发展方式。每次需要时分支存储库:)

答案 4 :(得分:5)

我相信这是来自编码恐怖:

Chris Birmele关于分支和合并的论文是我发现的最重要的源代码控制任务。有许多方法可以分支,没有一种正确的方法可以实现。熟悉您的选择,以便了解每个选项的权衡。

Branching and Merging Primer

答案 5 :(得分:3)

Eric Sink's Source Control HOWTO中的后续条目涵盖分支和合并。

答案 6 :(得分:3)

如果你想要一个10的启动器用于颠覆:

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

在复杂的开发任务中使用开发分支(来自主干的分支)。任务完成后,使用重新集成合并将更改从分支拉到主干。这样你就可以对trunk进行一些特定的提交,而不是所有与同一任务相关的提交。不再需要时删除这些开发分支。将它们命名为'FeatureX'

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

每当您制作发布给客户或部署到实时的构建或修补程序时,都会从您的版本分支创建特定标记。名称如'2.4.1','2.4.2'等。

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

这对于审核员,自动生成的发行说明,测试人员以及您对确切内容和内容的信心非常有用。使用带有此信息的自动生成矩阵可以快速查看不同版本包含的内容。

答案 7 :(得分:3)

答案 8 :(得分:2)

你应该离开CVS。 CVS是旧的,在分支/标记方面不是很快(分支/标签创建线性地取决于项目中的文件数量)

您应首先考虑分支策略:您想拥有

吗?
  • stable trunk
  • 功能分支
  • 开发者分支机构
  • unstable trunk / release branches
  • 平台分支

这在很大程度上取决于您的项目和开发理念

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

这说明应该很清楚,多存储库布局更难以维护稳定的标记系统。我更喜欢“全部标记”方法,但这是我个人的选择。

答案 9 :(得分:2)

几年前,当我第一次使用真正的SCM(来自安全源)时,我发现以下内容非常有用 - 那时我认为有一份白皮书:

http://www.perforce.com/perforce/bestpractices.html

答案 10 :(得分:1)

Cederqvist通常被视为 CVS指南。

答案 11 :(得分:1)

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

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

答案 12 :(得分:1)

嗯,你使用什么源控制系统并不重要,它们基本上都遵循某种形式的主干/分支/标签结构。即使它是一个分布式模型,也会以反映这种情况的方式设置存储库。

有一个非常简单的解释让你开始here