Email or username:

Password:

Forgot your password?
Umnik

А в GitLab и других есть инструмент, позволяющий проверять в каждом релизе, включены ли такие-то коммиты в релиз? Ну или по какому-то другому триггеру.

Суть в том, что иногда стреляет человеческий фактор и при переносе коммитов часть могут терять. А так бы каждый успешный MR/PR можно было бы куда-то выплёвывать хеш коммита, который соотвествует этому самому MR куда-то и все последующие разы проверять, что он тоже есть.

Или, скажем, делаем форк. Например для нужд кастомизации под конкретного заказчика. И проверяется, всё ли из основного проекта переносят в форк.

11 comments
⚛️Revertron :straight:

@umnik По-моему, это достигается сборками из определённой ветки, и при мерджах как раз и следят что туда попадает.

Umnik

@Revertron у проекта может быть несколько параллельных, но вполне "релизных" веток. Так бывает, когда продукт делается под разных заказчиков, например.

Есть, условный, мейн лайн, а остальные строятся поверх. При этом легко может быть, что ошибка исправлена только для Х, а потом её тащат в мейнлайн, чтобы другие получили фикс. А может быть и так, что сначала делается фикс для Х, потом для Y, потому что он следующим пойдёт в релиз, потом для Z, а потом только в мейн лайн

⚛️Revertron :straight:

@umnik Окей, а как в таких случаях мерджатся ветки?
Похоже, что надо максимально вытаскивать весь одинаковый функционал во что-то типа библиотеки, а по веткам раскидывать только брендинг.

medvedych

@umnik звучит как-будто проблемы с процессами пытаются решить техническими средствами. Откуда возникает проблема что из МР теряются коммиты? Он же один раз мержится в ветку и живет там всегда.
Если надо пихать его в несколько веток, то делается МР в несколько веток и там он остается жить навечно.
Или есть еще какой-то сценарий когда ветки надо пересобирать постоянно?

Umnik

@medvedych ты описываешь сценарий, когда есть 1 продукт и он собирается из мастера или, например, от мастера делается бранч релиза, а после релиза этот бранч льётся в мастер.

Я про ситуацию, когда у тебя на одном мастере 15 бранчей и все релизные, просто под разных заказчиков. Все релизятся в свои сроки, т.к. заказчикам нужно в разное время. У каждого есть какая-то специфичная фича, а некоторые специфичны для некоторых, но не для всех.

medvedych

@umnik ну фича пилится, дальше делается МР во все бранчи где она нужна.
Время релиза тут вообще по боку, влил в ветку и пусть болтается до момента релиза.
Тут единственное слабое место - откуда берётся знание в куда именно, кроме мастера, должны войти эти МРы.

Если возвращаться к изначальному вопросу - я бы сделал какой-то шаг в CI который просто смотрит имя мердж-коммита и сравнивает список коммитов с мастером. Готовы тулов для такого не видел :(

Umnik

@medvedych ну вот ты понял проблему уже. Наверни ещё сверху двигающиеся сроки, когда заказчик может менять мнение.

И я и спросил про CI, но не знаю, есть ли что-то готовое. Понятное дело, что можно всегда в некую банку бросать все коммиты, связанные с MR/PR, но ВДРУГ это уже кем-то сделано

medvedych

@umnik ну сроки тут влияния особо не должны оказывать. МР готов - залили его всем желающим в ветки и он ждет следующего релиза. Не готов - ну так и релизить нечего :)

Хотя не 100% решение конечно, всё равно найдется тот, кто решит, что ему надо эту фичу через полгода после релиза. Тут только если плагинами все кастомизации оформлять, но тут свои проблемы уже будут

Ever Aftar

@umnik В ГитЛабе на странице коммита в самом верху, прямо под заголовком, есть секция, где перечислено в каких ветках и каких тэгах, и в мердж реквестах этот коммит присутствует.

Umnik

@ever это понятно. Искать присутствие могу и `git log --oneline | grep <sha256>`, например. А бранчи: `git branch --contains=<sha256>`.

Я на основе этого и планировал делать проверки. Но спросил, может есть встроенный механизм, чтобы при создании тега сразу проверить, не потерялось ли чего из важного

Ever Aftar

@umnik Ну вот так и проверяешь, включен или не включен в новый MR. А важный это был коммит, или не важный, этого гит определить не сможет. Это уже к людям.

Go Up