SVN分支与主干同步

SVN分支与主干同步,svn,branch,sync,trunk,svn-trunk,Svn,Branch,Sync,Trunk,Svn Trunk,我正在使用SVN,我的存储库包含一个主干: trunk | |_____A | |_____B | |_____C 我还有两个与主干结构相同的分支: branch | |_____DEV | |_____A | |_____B | |_____C | |_____PROD | |_____A | |_____B | |_____

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

trunk
|
|_____A
|
|_____B
|
|_____C
我还有两个与主干结构相同的分支:

branch
|
|_____DEV
       |
       |_____A
       |
       |_____B
       |
       |_____C
|
|_____PROD
       |
       |_____A
       |
       |_____B
       |
       |_____C
主干用于正在进行的开发,分支具有与主干相同的结构,但用于不同的环境,即开发和生产。我在主干和开发分支中都有一个特定的文件夹“a”,我希望保持同步,即主干中文件夹“a”中所做的任何更改都会自动反映在文件夹“A”中的开发人员分支


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

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

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

您将看到主干和分支中发生了许多冲突

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

比如说,保持一个存储库作为父库,每月决定一个合并计划。这当然会有合并努力,但稳定努力会减少


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

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

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

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

在Jenkins中,您可以构建两个工件,一个用于开发,另一个用于PROD。如果一个用于开发的特定构建是好的,那么您可以非常肯定该构建的PROD工件也是好的

您还可以构建单个可部署工件,并让部署过程为正确的环境修改该部署工件。或者使用类似的方法将环境变量和设置保存在Zookeeper实例中,只使用一个可以部署在任何环境中的工件


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

我的想法是将分支文件夹保持为只读。开发团队将只在主干上提交。更改将反映在分支中,您需要在分支中引入合并计划。这也可以使用Jenkins脚本实现自动化。但是不要经常合并代码。