Политика гитования
От: LaptevVV Россия  
Дата: 24.06.23 16:23
Оценка:
Народ, поделитесь информацией, есть ли в вашей конторе какая-нить политика-админство гитования.
Или пушат и мержат все кому не лень без всякой политики?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Политика гитования
От: m2user  
Дата: 24.06.23 19:57
Оценка: +1
LVV>Народ, поделитесь информацией, есть ли в вашей конторе какая-нить политика-админство гитования.
LVV>Или пушат и мержат все кому не лень без всякой политики?

В качестве git-сервера используем MS AzureDevops.
Там права (branch permissions) и политики (branch policies) на ветки определяются на базе иерархических имен (Hierarchical branch folders c wildcards).
Через права можно ограничить действия на ветке, например чтение/запись/перезапись истории и пр.
Через политики — настроить gated check-in — через PR c различными предусловиями (сборка build`а, прохождение автотестов, review), а также ограничить способы merge (всего 4 варианта) и пр.

Ветки делим на релизные (прошлые и текущие релизы) и feature (для разработки отдельных feature одной или несколькими командами). На них, как правило, запрещена перезапись истории, настроены политики по PR (автотесты и review на базе путей в репозитории). Иногда могут быть некоторые ограничения по типу merge.
И персональные (личные) ветки — там владелец ветки (разработчик) настраивает всё по своему усмотрению.

Тип ветки, назначение и принадлежность (личных веток) определяется на базе иерхической системы имен.

Есть еще политики на запуск build`ов — какие на каких ветках можно запускать. И др. workflow на разные случаи жизни .
Re[2]: Политика гитования
От: LaptevVV Россия  
Дата: 25.06.23 03:48
Оценка:
LVV>>Народ, поделитесь информацией, есть ли в вашей конторе какая-нить политика-админство гитования.
LVV>>Или пушат и мержат все кому не лень без всякой политики?
С правами — это понятно, это все можно настроить т п.
А есть чел, которые за все это отвечает?
И много ли человек в проекте одновременно работает ?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Политика гитования
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 25.06.23 06:52
Оценка: 28 (3) +6 :)
Здравствуйте, LaptevVV, Вы писали:

LVV>Народ, поделитесь информацией, есть ли в вашей конторе какая-нить политика-админство гитования.


Примерно так
Re[3]: Политика гитования
От: m2user  
Дата: 25.06.23 06:56
Оценка: 14 (1)
LVV>>>Или пушат и мержат все кому не лень без всякой политики?
LVV>С правами — это понятно, это все можно настроить т п.
LVV>А есть чел, которые за все это отвечает?

Да есть выделенное подразделение (пара человек), которое занимается source control, build`ами и AzureDevops в целом.
Но они не занимаются рутинными слияниями и т.п. В зависимости от направления merge этим занимаются тимлиды лично, либо кто-то из них включается в required reviewers PR, а PR формирует обычный разработчик.
У тимлидов есть повышенные права, либо права им выдаются временно для определенных действий согласно документированному workflow.

LVV>И много ли человек в проекте одновременно работает ?


Над одной feature работает 1-3 команды по 4-8 человек. Feature в разработке обычно несколько и ещё bugfix, поэтому общее число людей, работающих с репозиторием, больше.
По коду пересечений между командами как правило нет, но, т.к. Git в отличие от других VCS не предполагает выборочного merge (если только не использовать cherry pick), то конфликты в "чужом" коде приходится разрешать совместными усилиями
Re[4]: Политика гитования
От: LaptevVV Россия  
Дата: 25.06.23 07:22
Оценка:
Спасибо!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Политика гитования
От: amironov79  
Дата: 26.06.23 05:50
Оценка: 17 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Народ, поделитесь информацией, есть ли в вашей конторе какая-нить политика-админство гитования.

LVV>Или пушат и мержат все кому не лень без всякой политики?

Используем процесс, похожий на описанный здесь
Автор: vsb
Дата: 26.01.22
, только с приоритетом у merge перед rebase.
Re[2]: Политика гитования
От: LaptevVV Россия  
Дата: 27.06.23 04:48
Оценка:
А кто нибудь за этим следит?
Или это записано в каком-то доке?
Или стихийно?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Политика гитования
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 27.06.23 04:55
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>А кто нибудь за этим следит?

LVV>Или это записано в каком-то доке?

Нет и нет, просто есть культура, которая распространяется сама по себе.
Re[2]: Политика гитования
От: LaptevVV Россия  
Дата: 27.06.23 05:06
Оценка:
A>Используем процесс, похожий на описанный здесь
Автор: vsb
Дата: 26.01.22
, только с приоритетом у merge перед rebase.

А кто-нить за этим следит или все сами по себе сознательные и не нарушают?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Политика гитования
От: amironov79  
Дата: 27.06.23 05:44
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>А кто-нить за этим следит или все сами по себе сознательные и не нарушают?


Какого-либо разделения прав внутри репозитория нет. Но этот процесс настолько прост и понятен, что нет причин его нарушать.
Re[4]: Политика гитования
От: m2user  
Дата: 27.06.23 07:02
Оценка: 17 (1)
LVV>>А кто нибудь за этим следит?
LVV>>Или это записано в каком-то доке?

N>Нет и нет, просто есть культура, которая распространяется сама по себе.


Ну раз Вам всё просто и понятно, то можете прокомментировать ситуацию описанную здесь.
Так ли опасна ситуация, как пишет автор статьи, и почему для решения не достаточно "культуры", а нужен pre-receive hook.
Re[5]: Политика гитования
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 27.06.23 07:52
Оценка:
Здравствуйте, m2user, Вы писали:

M>Ну раз Вам всё просто и понятно, то можете прокомментировать ситуацию описанную здесь.

M>Так ли опасна ситуация, как пишет автор статьи, и почему для решения не достаточно "культуры", а нужен pre-receive hook.

Зависит от конкретной команды. У нас можно в течение 5-10 минут собраться и устно всё порешать. А ещё более менее известно, кто и за какой кусок кода отвечает.
Re: Политика гитования
От: Igore Россия  
Дата: 29.06.23 13:28
Оценка: 1 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Народ, поделитесь информацией, есть ли в вашей конторе какая-нить политика-админство гитования.

LVV>Или пушат и мержат все кому не лень без всякой политики?
develop, master, release/*, hotfix/* — комиты только через mr, с автотестами, в остальных ветках можно делать кто что хочет
Re[3]: Политика гитования
От: Skorodum Россия  
Дата: 30.06.23 07:49
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>С правами — это понятно, это все можно настроить т п.

LVV>А есть чел, которые за все это отвечает?
LVV>И много ли человек в проекте одновременно работает ?
Мы тоже используем Azure. В разных репозиториях разные настройки. Наиболее строгие в корневых С++ библиотеках и продуктах, отвечает за них тех.лид. Человек 20 туда коммитит.
Re[2]: Политика гитования
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 08.07.23 00:34
Оценка: +1
зачем так переусложнять?

Есть мастер, есть релизы бранчи. Все остальное short-lived branches, включая feature, hotfix, bugfix etc. Создаются и уничтожаются по факту мержа либо в мастер либо в релиз. hotfix/bugfix могут мержится в несколько мест (см. черрипикинг), если проблема в релиз бранче — но самое простое и чистое решение мержить фиксы в релиз и перед отдачей релиза/по мере необходимости мержить весь релиз в мастер (естественно, для этого есть какое то opportunity window, которое со временем закрывается).

Чем больше бранчей, тем больше проблем, количество параллельно поддерживаемых бранчей — главный источник сложности, зачем их плодить? За 10 лет я не видел нужды в develop бранче/где бы это использовалось.

по поводу политик — мне нравится как сделано в GitLab — protected branches, защищенные бранчи — в них нельзя мержить напрямую (или можно, но не всем), обычно это мастер, иногда релизы. Соответственно, для изменения кода необходимо создавать бранч и проходить через процедуру ревью и проверок перед мержем (например запуск тестов и код кавераджа). На практике этого хватает, усложнить, конечно, можно, но зачем?

релиз бранчи формируются и поддерживаются релиз инженером или равноправным лицом, это немного другая работа, нежели непосредственно разработка, но все решается в рамках скрума или для частных случаев митингами.
Отредактировано 08.07.2023 0:50 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒ . Предыдущая версия . Еще …
Отредактировано 08.07.2023 0:45 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒ . Предыдущая версия .
Отредактировано 08.07.2023 0:36 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒ . Предыдущая версия .
Re: Политика гитования
От: Ziaw Россия  
Дата: 08.07.23 02:57
Оценка: 34 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Народ, поделитесь информацией, есть ли в вашей конторе какая-нить политика-админство гитования.

LVV>Или пушат и мержат все кому не лень без всякой политики?

Мне нравится схема, которую показал как-то коллега и она прижилась. Названия не знаю, возможно кто-то подскажет.

Используется две основных ветки: develop/release.

develop развернут на staging, в нем тестируются таски/фичи.
release в нем всегда протестированный код (развернут на другом staging, но это по желанию).

В отличии от gitflow, develop в release не вливается никогда.


                                       v QA/fix     v done
develop             ---------------------------------------
                                      /            /
TASK-01-login-users     ----------------------------
                       /                            \
release             ---------------------------------------
                       ^ develop/review              ^ ready to deploy


Жизненный цикл таски — стартуем ветку от release, вливаем в develop, тестируем, после апрува QA эту же ветку таски вливаем в бранч.

Процесс чуть сложнее gitflow, но гарантирует то, что в release в любой момент лежит только протестированный код и в нем нет ни одной сырой таски. Очень удобно.
Re[2]: Политика гитования
От: · Великобритания  
Дата: 08.07.23 07:32
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z> Жизненный цикл таски — стартуем ветку от release, вливаем в develop, тестируем, после апрува QA эту же ветку таски вливаем в бранч.

Плохо. Будут мучения с резолвингом конфликтов.
Мерж таск-ветки в релиз и в девелоп происходят в разное время. Более менее работоспособно только для маленьких проектов с парой независимых тасков. На большом проекте у тебя будет много таск-веток, некоторые с зависимостями друг от друга, которые вливаются в develop и релиз в разные моменты времени.
Это приведёт к конфликтам и они могут разрешаться немного по-разному. В итоге в release окажется код, который немного отличается от того, что было в develop. Т.е. тестироваться будет не тот код, который релизится. Опасно.
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: Политика гитования
От: m2user  
Дата: 08.07.23 08:04
Оценка:
Z>> Жизненный цикл таски — стартуем ветку от release, вливаем в develop, тестируем, после апрува QA эту же ветку таски вливаем в бранч.
·>Плохо. Будут мучения с резолвингом конфликтов.
·>Мерж таск-ветки в релиз и в девелоп происходят в разное время. Более менее работоспособно только для маленьких проектов с парой независимых тасков. На большом проекте у тебя будет много таск-веток, некоторые с зависимостями друг от друга, которые вливаются в develop и релиз в разные моменты времени.

Полагаю, что раз выбран такой подход, то таски у них не пересекаются по коду (такое может быть и на больших проектах). А если так случится, что пересекаются, то сделают промежуточную ветку task01+task02.

·>Т.е. тестироваться будет не тот код, который релизится. Опасно.


А это и так будет, потому что фичи могли в develop тестироваться вместе, а в release попасть в разное время. Или вообще фичу могут по результатам тестирования отложить до лучших времен.
Очевидно, что все это будет надежно, только если фичи независимы.
Re[4]: Политика гитования
От: · Великобритания  
Дата: 08.07.23 12:10
Оценка:
Здравствуйте, m2user, Вы писали:

m> Z>> Жизненный цикл таски — стартуем ветку от release, вливаем в develop, тестируем, после апрува QA эту же ветку таски вливаем в бранч.

m> ·>Плохо. Будут мучения с резолвингом конфликтов.
m> ·>Мерж таск-ветки в релиз и в девелоп происходят в разное время. Более менее работоспособно только для маленьких проектов с парой независимых тасков. На большом проекте у тебя будет много таск-веток, некоторые с зависимостями друг от друга, которые вливаются в develop и релиз в разные моменты времени.
m> Полагаю, что раз выбран такой подход, то таски у них не пересекаются по коду (такое может быть и на больших проектах).
Вполне верю. Просто он это описал как альтернативу стандартного flow. Нет уж, стандартный flow вполне универсален, а предложенное выше работает только в определённых тепличных условиях.

m>А если так случится, что пересекаются, то сделают промежуточную ветку task01+task02.

Угу, много чего интересного может случиться (где например хотфиксы в его схеме?), и появятся новые магические ветки. И в итоге у них получится кривоватое подмножество flow.

m> ·>Т.е. тестироваться будет не тот код, который релизится. Опасно.

m> А это и так будет, потому что фичи могли в develop тестироваться вместе, а в release попасть в разное время. Или вообще фичу могут по результатам тестирования отложить до лучших времен.
m> Очевидно, что все это будет надежно, только если фичи независимы.
Угу. Притом независимость — нетривиальное свойство, т.е. без серьёзного доказательства и исследования определить независимость фич невозможно.
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.