SVN分支与trunk同步

时间:2015-01-27 17:29:47

标签: svn branch sync trunk svn-trunk

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

trunk
|
|_____A
|
|_____B
|
|_____C

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

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

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

这是要走的路?我已经尝试构建一个post-commit脚本,以便在trunk中完成的每个更改都会自动提交到分支,但到目前为止我还没有成功。

2 个答案:

答案 0 :(得分:0)

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

  1. 并行开发是不可能的,因为工作在trunk上的团队提交了解决某些问题的东西,它可能会破坏在branch1或branch2上发生的并行开发。考虑将branch1或branch2稳定的重要性。

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

  3. 根据我在多项开发项目上的经验,这是我的建议。希望这会有所帮助。

    将存储库保留为父级,并按月确定合并计划(比如说)。这肯定会合并,但稳定努力会减少。

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

答案 1 :(得分:0)

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

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

一些只包含PHP或JavaScript文件的项目并不需要构建。在这种情况下,只需将文件压缩为可以部署的工件。只需确保包含的文件适用于合适的环境。优点是,一旦你有一个构建设置,你可以做单位和烟雾测试等事情。

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

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

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