2016-05-23 4 views
0

Мы (git/gerrit newbs) пытаемся использовать gerrit с ветвями функций. Рабочий процесс мы пытаемся реализовать следующим образом:Геррит с отслежёнными ветвями?

  1. Пользователь создает ветвь функции, толкает его на удаленный репозиторий непосредственно (без рассмотрения) с git push -u origin users-branch.
  2. Как изменения накапливаются в главной ветви, пользователь делает git pull --rebase origin master (--rebase), потому что иначе git создает слияние, а слияния не могут быть перенесены через gerrit).
  3. Пользователь продолжает нажимать свои изменения на дистанционное репо с git push --force origin users-branch (--force необходимо из-за --rebase на предыдущем этапе, я ищу лучший способ сделать это).
  4. Другие пользователи могут внести свой вклад в ветвь функции, нажав собственные изменения.
  5. Когда функция готова, пользователь нажимает ее для просмотра с помощью git push origin HEAD:refs/for/master.

Последний шаг не работает, потому что фиксации, которые были перенесены на gerrit на любом этапе, не могут быть снова нажаты.

Руководство по герриту предлагает внести поправки в те комманды, которые вы хотите снова нажать. Это кажется сложным и подверженным ошибкам.

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

Возможно использование другого репо для ветвей функций, так что gerrit никогда не видит повторяющиеся идентификаторы изменений, но это снова кажется ненужным осложнением.

Есть ли способ сделать то, что мы хотим безопасно и элегантно?

+0

* Объединение коммитов не может быть пропущено через gerrit *, вы можете переконфигурировать это, хотя. Но, возможно, вы этого не хотите, что я понял бы. –

+0

В чем смысл использования gerrit, если вы не хотите (большинство) коммитов, подлежащих рассмотрению? Я думаю, что это одна из самых сильных сторон, не позволяйте никому ничего нажимать, если только не было рассмотрено. –

+0

@TimCastelijns. Я хочу, чтобы все транзакции были переданы ведущим и освобождающим ветвям, но не для ветвей признаков. –

ответ

1

Если вы работаете по крайней мере Gerrit 2.11 вы можете воспользоваться fix для issue 1195 и включить опцию create-new-change-for-all-not-in-targettake into account target branch when determining new changes to open.

+0

Спасибо, это может быть так. Однако этот параметр неактивен в настройках проекта (все параметры на самом деле есть). Отключено администраторами? –

+0

Звучит так, как будто ни одна из групп, в которых вы находитесь, имеет разрешения «Владелец» для проекта. – sschuberth

+0

Да, видимо, у меня есть полные разрешения для git repo, но не для проекта gerrit, который сидит поверх него. Попросил администратора изменить его, сообщит, как только у меня будет возможность его протестировать. –

0

Вы пытаетесь работать с Gerrit с рабочим процессом потянуть (как Github, Bitbucket, ...).

Мы только что создали клиентский инструмент Геррита, чтобы сделать это:

https://github.com/Cosium/vet

С vet, вы можете иметь полнометражную ветвь, и вы можете добавить любое количество фиксаций без изменения или перебазирований ветви функции.