【问题标题】:SVN Branch in sync with trunkSVN 分支与主干同步
【发布时间】:2015-03-26 10:02:40
【问题描述】:

我正在使用 SVN,我的存储库包含一个主干:

trunk
|
|_____A
|
|_____B
|
|_____C

我也有2个与主干结构相同的分支:

branch
|
|_____DEV
       |
       |_____A
       |
       |_____B
       |
       |_____C
|
|_____PROD
       |
       |_____A
       |
       |_____B
       |
       |_____C

主干用于持续开发,分支具有与主干相同的结构,但用于不同的环境(即 DEV 和 PROD)。我在主干和 DEV 分支中都有一个特定的文件夹(文件夹“A”),我想保持同步,即在主干中的文件夹“A”中所做的任何更改都会自动反映在文件夹中的 DEV 分支中A'。

要走哪条路?我尝试构建一个提交后脚本,以便在主干中完成的每个更改都会自动提交到分支,但直到现在我还没有成功。

【问题讨论】:

    标签: svn branch sync trunk svn-trunk


    【解决方案1】:

    但是在这种情况下,您为什么要创建分支?这种方法存在多个问题。

    1. 并行开发是不可能的,因为如果在主干上工作的团队提交一些东西来解决某些问题,它可能会破坏分支 1 或分支 2 上发生的并行开发。考虑稳定 branch1 或 branch2 的努力。

    2. 您会看到许多发生在主干和分支中的冲突案例。

    根据我在多个开发项目中工作的经验,这是我的建议。希望这会有所帮助。

    将存储库作为父存储库并每月确定一个合并计划(比如说)。这肯定会有合并工作,但稳定工作会减少。

    可以做的另一件事是在分支中有一个 maven 依赖项,它将使用父存储库发布的最新版本。因此可以避免在创建分支时复制整个存储库。

    【讨论】:

    • 我的想法是将分支文件夹保持为只读。开发团队只会在主干上提交。然后更改将反映在分支中
    • 那是你需要引入合并计划的地方。这也可以使用 Jenkins 脚本自动完成。但不要非常频繁地合并代码。
    【解决方案2】:

    PRODDEV 环境之间的完全区别是什么?是几个文件,一个不同的目录吗?是一堆文件吗?

    通常,这样的事情是作为构建过程的一部分来处理的。然后,在构建过程中,您可以构建开发或生产版本。

    有些项目只包含 PHP 或 JavaScript 文件,实际上并不需要构建。在这种情况下,只需将文件压缩为您可以部署的工件。只需确保包含的文件适用于正确的环境。这样做的好处是,一旦你有了构建设置,你就可以进行单元测试和冒烟测试。

    在 Jenkins 中,您可以构建两个工件,一个用于 DEV,另一个用于 PROD。如果 DEV 的特定构建很好,那么您很确定该构建的 PROD 工件也很好。

    您还可以构建单个可部署工件,并让部署过程针对正确的环境修改该部署工件。或者使用 Zookeeper 之类的东西将环境变量和设置保存在 Zookeeper 实例中,并且只需使用可以部署在任何环境中的单个工件。

    没有理由使用两个必须保持同步的独立分支。

    【讨论】:

      猜你喜欢
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多