多分支模型
Multi-branching model
目前我有一个关于我应该使用的分支模型的任务。
现在我有 master 分支,我不时地分支发布分支以发布有关新功能的分支。这就是我的分支模型现在的样子。
master
|
|---- release 1.0 branch
| |
| |
| |
| |----- *(1) needed branch
| | |
| | |
| | |
| | |
|---- |
|---------
|
|---- release 1.1
| |
| |----- needed branch
| | |
| | |
| |
*(1)
- Each time release branch is closed for features I make new feature branch and then merge this("needed branch") just before next
release.
阅读本文可能会提出一些问题。
我会在出现问题时对其进行编辑,以便我可以在 post
中给出答案
- 如果您需要更多功能,为什么要关闭发布分支? - 问题是我需要在开发 "over".
之后随时拥有稳定的分支(发布)
我想完成什么?
这个分支模型的问题是我可能有很多功能,每个功能都针对不同的客户,而且许多客户不想再等 1 或 2 周,直到下一次部署。我正在考虑为每个客户创建分支并在那里推送功能,每当客户想要获得给定的功能时,我都可以从那里部署而不影响其他客户。因为现在这是不可能的。但这确实是一种糟糕的方法,因为随着客户的增长,分支机构也会增长。
我想要更优雅的方法。我知道评论中会有很多问题,所以请问他们,看看我是否可以回答他们并提出解决方案或至少一个想法。
听起来你的问题不是Git:你的问题是人。既然这些人付钱给你,大概,这似乎是一个正确的问题!
我会做的是:
|
* tag:r1
|\______________________
| \ \ \
| * feature1 WIP2 WIP3
| __/ |
|/ |
* tag:r2 * feature2
| ________________/
|/
* tag:r3
|
master
换句话说,我会完成 master
的所有发布,以及功能分支上的所有工作。当一个功能完成、测试、 和 客户需要它时,只有那时我才会合并到 master
、重新测试并发布另一个版本。这样master永远不会处于开发状态;它总是 "just released",或 "just about to release"(或空闲)。
如果 WIP3 ("Work in progress 3") 需要很长时间来开发,图表将像这样演变:
|
* tag:r1
|\__________
| \
| WIP3
* tag:r2 |
|\__________ |
| \|
| * merge
* tag:r3 |
|\__________ |
| \|
| * merge
| |
| * feature3
| __________/
|/
* tag:r4
|
master
(我删除了 feature1
和 feature2
分支,现在它们合并了,但您仍然会在历史记录中看到多个路径。)
如果您发现客户想要某个旧版本的错误修复版本(也许他们为支持付费,但没有为新功能付费?),那么您始终可以从标签创建一个发布分支:
|
* tag:r1
|
* tag:r2
|\_________
* tag:r3 \
| * bugfix
* tag:r4 |
| * tag:r2.1
master |
release2.x_branch
目前我有一个关于我应该使用的分支模型的任务。 现在我有 master 分支,我不时地分支发布分支以发布有关新功能的分支。这就是我的分支模型现在的样子。
master
|
|---- release 1.0 branch
| |
| |
| |
| |----- *(1) needed branch
| | |
| | |
| | |
| | |
|---- |
|---------
|
|---- release 1.1
| |
| |----- needed branch
| | |
| | |
| |
*(1)
- Each time release branch is closed for features I make new feature branch and then merge this("needed branch") just before next release.
阅读本文可能会提出一些问题。
我会在出现问题时对其进行编辑,以便我可以在 post
中给出答案- 如果您需要更多功能,为什么要关闭发布分支? - 问题是我需要在开发 "over". 之后随时拥有稳定的分支(发布)
我想完成什么?
这个分支模型的问题是我可能有很多功能,每个功能都针对不同的客户,而且许多客户不想再等 1 或 2 周,直到下一次部署。我正在考虑为每个客户创建分支并在那里推送功能,每当客户想要获得给定的功能时,我都可以从那里部署而不影响其他客户。因为现在这是不可能的。但这确实是一种糟糕的方法,因为随着客户的增长,分支机构也会增长。
我想要更优雅的方法。我知道评论中会有很多问题,所以请问他们,看看我是否可以回答他们并提出解决方案或至少一个想法。
听起来你的问题不是Git:你的问题是人。既然这些人付钱给你,大概,这似乎是一个正确的问题!
我会做的是:
|
* tag:r1
|\______________________
| \ \ \
| * feature1 WIP2 WIP3
| __/ |
|/ |
* tag:r2 * feature2
| ________________/
|/
* tag:r3
|
master
换句话说,我会完成 master
的所有发布,以及功能分支上的所有工作。当一个功能完成、测试、 和 客户需要它时,只有那时我才会合并到 master
、重新测试并发布另一个版本。这样master永远不会处于开发状态;它总是 "just released",或 "just about to release"(或空闲)。
如果 WIP3 ("Work in progress 3") 需要很长时间来开发,图表将像这样演变:
|
* tag:r1
|\__________
| \
| WIP3
* tag:r2 |
|\__________ |
| \|
| * merge
* tag:r3 |
|\__________ |
| \|
| * merge
| |
| * feature3
| __________/
|/
* tag:r4
|
master
(我删除了 feature1
和 feature2
分支,现在它们合并了,但您仍然会在历史记录中看到多个路径。)
如果您发现客户想要某个旧版本的错误修复版本(也许他们为支持付费,但没有为新功能付费?),那么您始终可以从标签创建一个发布分支:
|
* tag:r1
|
* tag:r2
|\_________
* tag:r3 \
| * bugfix
* tag:r4 |
| * tag:r2.1
master |
release2.x_branch