我将负责决定在我们的CVS / SVN回购中如何进行标记分支。
是否有任何文献可以帮助我了解使用CVS的最佳方式?分支/标记等?
感谢
答案 0 :(得分:22)
我在FreeBSD项目中担任CVS十多年的个人经历是:尽可能快地切换到别的东西。 CVS是面向文件而不是面向快照/变更集,这使得在分支之间合并相当痛苦。无论如何,分支机构对CVS很痛苦。
关于CVS的资源,请参阅CVS Home
答案 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关于分支和合并的论文是我发现的最重要的源代码控制任务。有许多方法可以分支,没有一种正确的方法可以实现。熟悉您的选择,以便了解每个选项的权衡。
答案 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是旧的,在分支/标记方面不是很快(分支/标签创建线性地取决于项目中的文件数量)
您应首先考虑分支策略:您想拥有
吗?这在很大程度上取决于您的项目和开发理念
如果你想使用SVN,你必须考虑你的存储库布局,因为几乎所有的软件项目都是基于模块的,你应该找到一个可以轻松标记所有需要的模块的结构。 SVN及其基于文件夹的分支/标签方法并不容易实现这一要求。
这说明应该很清楚,多存储库布局更难以维护稳定的标记系统。我更喜欢“全部标记”方法,但这是我个人的选择。
答案 9 :(得分:2)
几年前,当我第一次使用真正的SCM(来自安全源)时,我发现以下内容非常有用 - 那时我认为有一份白皮书:
答案 10 :(得分:1)
Cederqvist通常被视为 CVS指南。
答案 11 :(得分:1)
我建议使用GIT,因为标记/分支过程非常容易使用。使用SVN(特别是在Windows上)的好处是GUI工具和windows shell集成的数量。
我还推荐了关于SVN的实用程序员书籍的推荐。
答案 12 :(得分:1)
嗯,你使用什么源控制系统并不重要,它们基本上都遵循某种形式的主干/分支/标签结构。即使它是一个分布式模型,也会以反映这种情况的方式设置存储库。
有一个非常简单的解释让你开始here。