Назад | Перейти на главную страницу

Может ли Redmine самостоятельно создавать репозитории?

Я установил Redmine и имею рабочие репозитории Mercurial.

Репозитории hg расположены в / home / hg / repos, поэтому я установил hg в качестве владельца, чтобы иметь возможность отправлять.

Можно ли сделать так, чтобы Redmine автоматически настраивал репозитории при их «создании» в веб-интерфейсе? Есть только один человек, которому я могу доверять с доступом su на нашей Linux-машине, но несколько пользователей должны иметь возможность создавать проекты и связанные репозитории. Было бы идеально настроить это так, чтобы redmine автоматически создавал эти репозитории.

Это возможно? Достаточно ли я ясен в своем вопросе?

Проверьте Страница репозиториев на Redmine Wiki и прокрутите вниз до раздела репозиториев Mercurial, чтобы убедиться, что ваши настройки правильно.

Затем вы можете проверить Конфигурация Apache для Mercurial Repositories на Redmine Wiki, чтобы убедиться, что у вас есть правильные настройки для получения контроля доступа из Redmine.

Конфигурация Apache для репозиториев Mercurial

Создайте файл с именем «hgweb.config» в той же папке, что и «hgwebdir.cgi». Этот фодер будет корневой папкой репозитория. Затем отредактируйте "hgweb.config" примерно так:

[paths]
/=/path/to/root/repository/**

[web]
allow_push = *
allowbz2 = yes
allowgz = yes
allowzip = yes

Следуя инструкциям, установите Redmine.pm, как описано, и настройте свой apache следующим образом.

RewriteEngine on
PerlLoadModule Apache2::Redmine
PerlLoadModule Authen::Simple::LDAP
ScriptAliasMatch ^/hg(.*)  /path/to/the/hgwebdir.cgi/$1
<Location /hg>
    AuthType Basic
    AuthName "Mercurial" 
    Require valid-user

    #Redmine auth
    PerlAccessHandler Apache::Authn::Redmine::access_handler
    PerlAuthenHandler Apache::Authn::Redmine::authen_handler
    RedmineDSN "DBI:mysql:database=redmine;host=localhost" 
    RedmineDbUser "DB_USER" 
    RedmineDbPass "DB_PASSWD" 
</Location>

Да. Сценарий reposman.rb специально предназначен для этой цели.

Обычно это делается путем вызова вышеуказанного скрипта в cronjob, т.е.

10 * * * * root ruby /root/redmine-1.0.0/extra/svn/reposman.rb --redmine-host http://my.redmine./ --svn-dir /data/svn/ --url my.svn.server --key=mykey --owner apache --verbose >> /var/log/reposman.log 

Однако у mercurial нет эквивалентной реализации, как для SVN (http://www.redmine.org/boards/1/topics/575). Для этого можно написать свои собственные хуки. Если вы не возражаете против изменения ядра Redmine, вы можете использовать приведенную здесь информацию как минимальный источник подхода к проблеме: http://joshua-enfield.blogspot.com/2010/09/adding-your-own-hooks-into-redmine.html

С помощью вышеуказанного метода вы можете вызвать сценарий оболочки, содержащий команды, которые вы обычно используете для создания репозитория. Это полностью настраивается. (Сценарий оболочки - это просто файл с разрешениями на выполнение, содержащий команды, как если бы вы вводили их в командной строке). В основном, используя это руководство для создания репозитория, вы вызываете скрипт, который создает каталог по имени идентификатора проекта. cd в этот каталог, а затем запустите hg init Затем вы можете использовать mysql для автоматического добавления репозитория в проект, идентифицированный идентификатором проекта.

Более элегантным решением было бы использовать вышеупомянутое с собственными хуками Redmine в плагине или создавать копии измененных страниц в плагине, которые автоматически переопределяли бы ядро ​​Redmine - http://www.redmine.org/wiki/1/Hooks

Если вам нужно что-то сделать с базой данных, полезно следующее: https://stackoverflow.com/questions/3215902/3284099#3284099