Настройка Gerrit с зеркалом Git репозитория Subversion

На работе мы в настоящее время используем Subversion для SCM. Я настроил локальное зеркало git-svn и использую его в качестве основного рабочего пространства для разработки. Теперь меня устраивает базовый функционал. Еще один разработчик в команде также хочет перейти на Git, поэтому мы рассматриваем возможность использования git-зеркала репозитория svn. Я также хотел бы попробовать Gerrit вместе с этим упражнением.

Установка, которую я представляю, выглядит примерно так:

  1. Зеркало git для репозитория svn. Ветка master на этом синхронизируется с транком на svn.

  2. Для каждой функции создается тематическая ветка. Это завязано на Геррите, на которого и происходит обзор. Как только набор изменений одобрен, Геррит объединяет основную ветку темы.

  3. gitweb или аналогичное веб-приложение для просмотра репозитория в браузере.

  4. Аналогичный процесс для других веток на subversion, кроме магистрали.

По сути, я хочу, чтобы я взаимодействовал только с моим локальным клоном git и веб-приложением Gerrit; отправка проверенных изменений обратно в svn должна происходить автоматически. Как мне настроить что-то подобное?


person Binil Thomas    schedule 15.10.2011    source источник
comment
Кто будет решать конфликты, возникающие при отправке изменений обратно в Subversion?   -  person Greg Hewgill    schedule 15.10.2011
comment
@Greg Hewgill Кхм, я предполагаю, что когда Геррит попытается объединить изменение с основной веткой, это должно потерпеть неудачу. :-)   -  person Binil Thomas    schedule 16.10.2011
comment
Хех, я пытаюсь сделать что-то подобное, хотя мне нужно только сделать резервную копию моих веток git без необходимости конвертировать их в ветки SVN. Очень смущен тем, что меня неоднократно спрашивали мой пароль для «git push», пока я не заметил, что забыл поставить ssh:// в начале ссылки на сервер!   -  person android.weasel    schedule 21.05.2012


Ответы (2)


Можно настроить зеркало Git, которое синхронизируется с репозиторием SVN.

Установите SubGit в свой репозиторий SVN:

$ subgit install path/to/svn/repository

Затем просто настройте доступ к связанному репозиторию Git, созданному (path/to/svn/repository/.git), используя Apache или что-то еще. Каждое нажатие в этот репозиторий Git будет переведено в версию SVN и наоборот.

Таким образом, вы можете использовать связанный репозиторий Git в Gerrit и для своей команды (как будто SVN никогда не существовало). После этого вы можете закрыть репозиторий SVN (или продолжить его использование). Чтобы остановить синхронизацию перед завершением работы:

$ subgit uninstall path/to/svn/repository
person Dmitry Pavlenko    schedule 31.07.2012

К сожалению, это невозможно сделать автоматически (по крайней мере, не без большой работы). Вот несколько шагов, которые могут приблизить вас:

  1. Настройте свой клон git на сервере Gerrit
  2. Создайте хук svn или периодическую задачу, которая будет извлекаться из svn и отправляться в ваш клон git.
  3. У Геррита есть встроенная версия gitweb, так что там вы прикрыты.
  4. На сервере Gerrit создайте обработку слияния изменений который вернет svn

Как упоминал Грег выше, когда шаг 4 не удается, все будет сложно. Вам придется сбросить репозиторий git в Gerrit, чтобы он соответствовал svn, и повторно отправить изменения. Это будет намного проще, если/когда вы убедите остальную часть вашей команды отказаться от svn и использовать git/Gerrit :-)

Удачи!

person Brad    schedule 29.10.2011