带有 "Dependencies"的 SVN 多个分支

标签 svn deployment version-control

我目前面临以下情况:

我有一个带有主干的 SVN 存储库,其中一些开发人员继续添加代码(正如它应该的那样)

然后我们有不同的分支(见图)p1_test(测试系统)和 p1_live(生产系统)。

我们想要的过程是每 X 天从主干(进程 v¹)更新 p1_test 分支。
然后来自 p1_test 的工作副本中的“真实文件”将被更新(v²)。

系统 p1_test 已经过测试,并且每个错误修复都(或应该)提交到 p1_test 分支,并且 p1_test 系统更新(再次 v²)。
同时,未参与 p1-cycle 的其他开发人员将继续添加到主干中。这些变化应该不是 集成到 p1_test 分支中(尚未)。

最后(当 p1_test 被认为是稳定的时,分支 p1_live 应该从 p1_test 分支更新,并且对 p1_test 所做的所有更改都应该重新集成到主干(v³)。

在给定的时间点 v⁴ 被执行,这意味着 p1_live 的工作副本是从 p1_live 分支更新的。

尽管一切都应该经过测试,但我们必须可以选择“修复”p1_live 上出现的任何严重错误。在这种情况下,更改直接对 p1_live 分支进行,并且系统从该分支 (v⁵) 更新。

此进程必须与未知数量的 pX_test 和 pX_live 系统同时工作。

Svn Branching Schema

这甚至可以使用svn吗?
目前我面临着很多不同的修订号、冲突等问题。

是否有版本控制系统可以让我遵循给定的程序?

亲切的问候,
时间把戏

最佳答案

我们将 Subversion 用于大型事件代码库,其使用模式与您的相似。我们有标准的主干/分支/标签基础层次结构。在分支机构中,我们有 unstable , testing , 和 stable .我们还有“用户”分支,在分支文件夹中每个用户名都有一个文件夹。标签正是它们应有的样子:不可触碰的快照。

trunk

branches/unstable
branches/testing
branches/stable
branches/userA/branch1
branches/userA/branch2
...

tags/stable/rNNNN
tags/stable/vN.N.N.N
...
  • 凭借我使用 Subversion 的所有经验,我发现它非常有效
    如果代码流入 会更好仅一个方向 .异常(exception)是
    从主干创建一个分支,当然可以合并
    一旦分支完成,就会变回主干(通常称为“重新整合”一个分支)。
  • 如果代码不能单向流动,那么它必须至少坚持一条路 .
    这意味着一个分支的一个分支永远不应该直接重新整合回
    行李箱,例如。
  • 我们的使用模式遵循所有积极的开发,包括错误修复,
    总是先进入主干,然后主干是更新提供者
    对于不稳定、测试和稳定的分支。 (也可以
    关注 trunk -> unstable -> testing -> stable合并路径,但我们不
    由于特定于我们的测试/发布过程的原因。)
  • 如果您有特定分支的修复程序,则将其放在那里并且不打算
    将其合并回主干。我的经验发现这是一个很好的方法
    意外地有一个无辜的分支更新中断代码,甚至从中删除代码
    尚未提供给分支的主干。

  • 您可能会从我的观点中了解到,Subversion 需要一个过程才能真正按照您的意愿(我们也是这样做的)有效地使用它,并避免那些让您说“现在怎么办?”的奇怪冲突。关于 Subversion,你所描述和试图弄清楚的一切对我来说都太熟悉了。

    我经常考虑围绕像 Git 或 Mercurial 这样的 DVCS 工具的炒作(根本没有这些问题??)是否值得花时间迁移我们的存储库(数百个)。唯一阻止我尝试的是时间限制,但您可能更适合尝试其中一种工具。

    关于带有 "Dependencies"的 SVN 多个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12496662/

    相关文章:

    svn - TortoiseSvn 符号链接(symbolic link)到存储库中的单独文件夹

    svn - 单独使用 SVN 或在小型工作组中使用 - 工作流方法?

    svn - svn checkout 时为 "Network connection closed unexpectedly"

    java - 在 Java 中使用 SVNKit 调用 doLog() 时出现奇怪的 URL

    java - 在 jar 中创建新文件?

    java - Jelastic 上多应用一个数据库场景的最佳配置

    django - 在生产环境中执行彻底的 Django 模型迁移的明智方法是什么?

    svn - 如何解决 Eclipse Subclipse 中的冲突

    Git:git push -u origin 来源:master

    svn - 从 SVN 转储中删除空修订时出现问题