Я установил 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