Мой вопрос не очень понятно (пока), и я, возможно, потребуется ваша обратная связь более понять, что я действительно ищет ...Какой гладкий рабочий процесс Git можно использовать для перехода от разработки к выпуску?
Во всяком случае, я прочитал довольно много о git-flow
и другие потоки используются на Git и я все еще разделен о том, как решить мою ситуацию.
В настоящее время у меня есть ветка master
, которая развивалась как для разработки, так и для выпуска. Это главным образом потому, что вся история была импортирована из нашего предыдущего SCM. Также мы разместили tag
на каждом выпуске.
Сегодня мы начинаем процесс выпуска. С нашей единственной ведущей отраслью мы вынуждены замораживать разработку до тех пор, пока релиз не будет завершен. В качестве альтернативы можно было бы:
- Создать
rc
ветвь отmaster
, на которых применяются горячие исправления. В конце концов слейтеrc
на веткеrelease
, затем примените к ней тег. - Создайте ветку
develop
отmaster
, затем используйтеmaster
как ветвьrc
. В конце концов применитеtag
наmaster
и продолжите сdevelop
в качестве основной ветки развития.
С решением (1) вопрос о создании ветви на первом выпуске, а затем о слиянии, весь следующий выпуск в нее открыт. Также теги должны быть перемещены также, что может ввести в заблуждение.
С решением (2) master
считается веткой выпуска, не являющейся ветвью развития, как и должно быть.
Я не уверен в git-flow, который добавляет некоторую сложность. Я хочу, чтобы ветка master
оставалась стволом проекта, но в этом случае я не знаю, какое решение наиболее адаптировано.
использования:
У меня есть этот журнал GIT, из которого я хотел бы, чтобы начать процесс проверки высвобождения.
* some changes
* v1.1.1 [v1.1.1]
* hotfix
* v1.1 [v1.1]
* merged feature foo into master
* changes
* v1.0 [v1.0]
Первое решение сохранить master
ветвь развития, а затем создать release/v1.2rc
филиал
* v1.2 [v1.2] (release/releases)
| * merge next feature to master (master)
* | changing version rc to release (release/v1.2rc)
| * merged hotfix
|/|
* | hotfix
|/
* some changes
* v1.1.1 [v1.1.1]
* hotfix
* v1.1 [v1.1]
* merged feature foo into master
* changes
* v1.0 [v1.0]
Чтобы сохранить все релизы в release/releases
отрасли, было бы полезно, чтобы сделать работу от начало:
* v1.2 [v1.2] (release/releases)
/|
/|
/* | merge next feature to master (master)
* | | changing version rc to release (release/v1.2rc)
| * | merged hotfix
|/| |
* | | hotfix
|//
* * v1.1.1 [v1.1.1]
*/| some changes
* | v1.1.1
| * v1.1 [v1.1]
*/| hotfix
* | v1.1
* | merged feature foo into master
* | changes
| * v1.0 [v1.0]
*/
* v1.0
Это позволяет сделать git log release/releases
* v1.2 [v1.2] (release/releases)
* v1.1.1 [v1.1.1]
* v1.1 [v1.1]
* v1.0 [v1.0]
Однако, перемещая метки и релизы на отдельной ветке, мы теряем видимость на master
. Кроме того, коррекция коррекции ошибок на предыдущем выпуске , то есть v1.1.2 не так легко сделать, и в конце концов мы получаем довольно тревожную release/releases
журнал:
* v1.1.2 hotfix [v1.1.2]
* v1.2 [v1.2] (release/releases)
* v1.1.1 [v1.1.1]
* v1.1 [v1.1]
* v1.0 [v1.0]