Мы (git/gerrit newbs) пытаемся использовать gerrit с ветвями функций. Рабочий процесс мы пытаемся реализовать следующим образом:Геррит с отслежёнными ветвями?
- Пользователь создает ветвь функции, толкает его на удаленный репозиторий непосредственно (без рассмотрения) с
git push -u origin users-branch
. - Как изменения накапливаются в главной ветви, пользователь делает
git pull --rebase origin master
(--rebase
), потому что иначе git создает слияние, а слияния не могут быть перенесены через gerrit). - Пользователь продолжает нажимать свои изменения на дистанционное репо с
git push --force origin users-branch
(--force
необходимо из-за--rebase
на предыдущем этапе, я ищу лучший способ сделать это). - Другие пользователи могут внести свой вклад в ветвь функции, нажав собственные изменения.
- Когда функция готова, пользователь нажимает ее для просмотра с помощью
git push origin HEAD:refs/for/master
.
Последний шаг не работает, потому что фиксации, которые были перенесены на gerrit на любом этапе, не могут быть снова нажаты.
Руководство по герриту предлагает внести поправки в те комманды, которые вы хотите снова нажать. Это кажется сложным и подверженным ошибкам.
Все работает, если пользователь никогда не подталкивает свои изменения к удаленному репо, потому что gerrit не видит изменений до тех пор, пока они не будут нажаты для проверки. Но это именно то, что нам не нравится.
Возможно использование другого репо для ветвей функций, так что gerrit никогда не видит повторяющиеся идентификаторы изменений, но это снова кажется ненужным осложнением.
Есть ли способ сделать то, что мы хотим безопасно и элегантно?
* Объединение коммитов не может быть пропущено через gerrit *, вы можете переконфигурировать это, хотя. Но, возможно, вы этого не хотите, что я понял бы. –
В чем смысл использования gerrit, если вы не хотите (большинство) коммитов, подлежащих рассмотрению? Я думаю, что это одна из самых сильных сторон, не позволяйте никому ничего нажимать, если только не было рассмотрено. –
@TimCastelijns. Я хочу, чтобы все транзакции были переданы ведущим и освобождающим ветвям, но не для ветвей признаков. –