我们有六个项目使用由submodule处理的一些常见子项目,现在我们选择使用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 获得相同的修复。
我们曾经:
以下是子项目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>设置为主。 (不需要使用git-subtree)
的插件上的标签所以,我们:
这肯定有效,但令我们恼火的是我们无法手动处理第4步。 AFAIK,无法在git-subtree中自动化它。
总而言之,我们对git-subtree感到非常满意,因为它允许我们(几乎)不会在git提交等方面处理插件,因为我们自动git subtree push
通过git-hooks
但是,手册第4步仍然存在,到目前为止我们无法实现自动化。有时,我们的一些开发人员忘记创建合并请求,因此 master 仍然容易受到攻击。
有没有办法自动化第4步(理想情况下通过git-subtree)?我们的选择是什么?