使用[git subtree]

时间:2017-11-16 14:58:09

标签: git gitlab git-subtree

我们有六个项目使用由处理的一些常见子项目,现在我们选择使用

这些子项目不是独立的,每个子项目都有一个分支,主要

例如, projectA & projectB 项目如下所示:

projectA:
  |_.git/
  |_src/
  |_app/
  |_plugins
        |__subproject1
        |__subproject3
        |__subproject12

projectB:
  |_.git/
  |_src/
  |_app/
  |_plugins
        |__subproject3
        |__subproject8

我们可以看到 projectpro projectB 之间的共同点是子项目3

  

Usecase1

projectA 已将子项目3 v1.3.0 演变为 v1.4.0

项目 projectB

子项目3 仍在 v1.3.0 上,并且应该保持一段时间。

但是,在 projectB 内的 v1.3.0 中发现了一个错误。因此,应修复 projectB 而不检索子项目 v1.4.0 。与此同时, v1.4.0 应与 v1.3.0 获得相同的修复。

  

我们曾经:

  1. 子项目3
  2. 中创建新分支修补程序/ bla
  3. 修复错误
  4. 根据修复提交
  5. 创建标记 v1.3.1
  6. 将此修补程序合并到主文件
  7. 创建代码 v1.4.1
  8. 切换到 v1.3.1
  9. projectB
  10. 中提交新的子项目3 版本
  11. 之后,我们在项目 projectA 中将子项目3 的版本设置为 v1.4.1
  12. 以下是子项目3 中的git log --decorate --all --graph projectB 内部)给出的内容。

    *   f923c0d (tag: v1.4.1, origin/master, origin/HEAD, master) Merge branch 'hotfix'
    |\
    | * cb8213d (HEAD, tag: v1.3.1, origin/hotfix, hotfix) fix #4.1
    * | bfb3008 (tag: v1.4.0) [plug1] #8
    * | 25ccbbd [plug1] #7
    * | ff22c34 #6
    * | cb9f3ab #5
    |/
    * 1e750fe (tag: v1.3.0) #4
    
      

    projectB 子项目3 设置为 master ^^^^ ,而 projectA 具有 subproject3 < / strong>设置为。 (不需要使用

    的插件上的标签

    所以,我们:

    1. 修复 projectB
    2. 中的错误
    3. projectB
    4. 创建提交
    5. push to master失败,这是正常的,所以我们推送到新分支修补程序
    6. 上创建合并请求(修补程序 - &gt;主)并手动接受:(
    7. 现在主人再次安全
    8. 这肯定有效,但令我们恼火的是我们无法手动处理第4步。 AFAIK,无法在中自动化它。

      总而言之,我们对感到非常满意,因为它允许我们(几乎)不会在git提交等方面处理插件,因为我们自动git subtree push通过

      但是,手册第4步仍然存在,到目前为止我们无法实现自动化。有时,我们的一些开发人员忘记创建合并请求,因此 master 仍然容易受到攻击。

      有没有办法自动化第4步(理想情况下通过)?我们的选择是什么?

0 个答案:

没有答案