SVN 分支与主干同步



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

trunk
|
|_____A
|
|_____B
|
|_____C

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

branch
|
|_____DEV
       |
       |_____A
       |
       |_____B
       |
       |_____C
|
|_____PROD
       |
       |_____A
       |
       |_____B
       |
       |_____C
主干用于

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

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

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

    并行开发
  1. 是不可能的,因为如果处理 trunk 的团队提交一些东西来解决一些问题,它可能会破坏分支 1 或分支 2 上发生的并行开发。考虑稳定分支 1 或分支 2 的努力,以解决重要问题。

  2. 你会看到许多冲突发生在树干和树枝上的情况。

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

将存储库保留为父存储库,并每月决定合并计划(比方说)。这肯定会有合并努力,但稳定努力会减少。

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

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

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

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

在 Jenkins 中,您可以构建两个工件,一个用于 DEV,一个用于 PROD。如果 DEV 的特定生成良好,则非常确定该版本的 PROD 项目也很好。

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

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

相关内容

  • 没有找到相关文章

最新更新