Настройка репозиториев

Общая информация

Redmine поддерживает интеграцию с различными системами контроля версий "из коробки":

SCM Поддерживаемые версии Комментарии
Subversion 1.3 & 1.4 & 1.5 & 1.6 Необходима 1.3 или выше. Не поддерживает Ruby Bindings для Subversion
CVS 1.12.12 Необходима 1.12, не работает с CVSNT
Mercurial 0.9.3
Bazaar 1.0.0.candidate.1 & 2.0.4
Darcs 1.0.7
Git 1.5.4.2

Замечание 1 : соответствующие пакеты должны быть установлены на той же машине, что и Redmine.

К примеру, если вы хотите получить доступ к репозиториям Subversion в Redmine, вы должны установить пакет subversion на машине с Redmine.

Замечание 2 : соответствующие пакеты должны быть доступны Redmine :

2 случая :
  • они доступны напрямую, в переменной окружения PATH:
    • если имя команды нестандартное, вы можете переопределить его в Redmine configuration file
  • вы можете определить полный путь к пакетам в Redmine configuration file

Наконец, удостоверьтесь в том, что выбрали необходимую SCM в Administration->Settings->Repositories->Enabled SCM

Добавление существующего репозитория к проекту

В настройках проекта убедитесь, что модуль 'Репозиторий' включен и откройте вкладку 'Репозиторий'.
Выберите SCM, соответствующую вашему репозиторию и введите адрес или URL репозитория.

Важно: Когда вы впервый раз открываете вкладку 'Хранилище', Redmine получает описание всех существующих в репозитории фиксаций (коммитов) и сохраняет их в базе данных.
Это происходит один раз для каждого репозитория, но может занять длительное время и вызвать time-out, если в вашем репозитории большое количество фиксаций (коммитов).

Для того, чтобы этого избежать, сделайте это offline.
После добавления репозитория проекту, выполните следующую команду:

$ ruby script/runner "Repository.fetch_changesets" -e production

Все фиксации (коммиты) будут извлечены в базу данных Redmine.

Начиная с версии 0.9.x, вы также можете перейти по URL с помощью ключа WS и fetch_changesets выполнится:

http://redmine.example.com/sys/fetch_changesets?key=<ключ WS> (=> в бд извлекутся фиксации всех активных проектов)
http://redmine.example.com/sys/fetch_changesets?key=<ключ WS>&id=foo (=> в бд извлекутся только фиксации проекта foo)

Не забудьте аутентификацию по ключу WS, как описано в Rest_api#Authentication.

См. пример в HowTo_setup_automatic_refresh_of_repositories_in_Redmine_on_commit.

Subversion репозиторий

Поддерживаются все стандартные протоколы ( http:, svn:, file: ...), просто укажите URL репозитория.

Например:

http://имя_машины/путь/к/репозиторию

Укажите имя пользователя и пароль, если репозиторий требует авторизации.

Примечание: если вы хотите получать доступ к репозиторию, используя svn+ssh://, необходимо настроить svn+ssh в не-интерактивный режим.
Для этого необходимо настроить public/private пару ключей для ssh аутентификации.

Установка соответствий login <-> Пользователь в Репозитории

Для корректного оторбажения имён в Хранилище, в Redmine есть возможность установки соответствий между login'ом и пользователя репозитория и пользователем Redmine.

Перейдите в Проект->Настройки->Хранилище->Пользователи.
Вы увидите таблицу с двумя столбцами. Левый содержит login пользователя Хранилища, правый - выбор соответствующего ему участника проекта.

Выберите и обновите пользователя Redmine, связанного с найденным именем в журнале хранилища.
Пользователи с одинаковыми именами или email в Redmine и хранилище связываются автоматически.