1

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

trunk
|
|_____A
|
|_____B
|
|_____C

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

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

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

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

4

2 回答 2

0

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

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

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

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

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

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

于 2015-01-27T20:41:30.560 回答
0

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

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

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

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

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

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

于 2015-01-27T17:43:13.277 回答