自动化创建仓库¶
概览¶
从版本0.5.0开始,Redmine能够处理Subversion仓库创建。这是通过位于extra/svn/目录中的reposman.rb脚本实现的。使用Redmine的最新版本(0.6.0或re. 860及以后版本),reposman.rb可以为您注册新仓库并设置仓库所有者。如果您使用的是旧版本,您将不得不自己注册仓库。
项目是通过SOAP网络服务从Redmine检索的。默认情况下,Redmine中禁用了此网络服务。要启用它,请转到“管理 -> 设置 -> 仓库”并选中“启用WS以管理仓库”。
在继续之前,我们需要选择一些名称,我将使用my.redmine.host
作为Redmine主机名,使用my.svn.server
作为SVN服务器...您必须创建一个目录,用于放置所有仓库,所有者必须是root,组是您的apache用户(例如Debian/Ubuntu上的www-data
)。我将使用/var/svn
。
mkdir /var/svn chown root:www-data /var/svn chmod 0750 /var/svn
我们还需要选择Apache用于为用户提供仓库的目录,我选择/svn
,因此仓库URL将类似于http://my.svn.server/svn/PROJECTID/,最后一个,Apache将用于Redmine浏览的目录,我将使用/svn-private/
。
最后,您需要知道Apache用户名,因为Debian/Ubuntu上是www-data
。我将使用这个。
警告¶
请注意,re. 916之前的reposman.rb有一个问题。您不需要更新redmine,只需使用位于extra/svn
的最新reposman.rb即可。
Perl reposman版本已弃用,因为新安装无法注册和设置所有者。
命令行参数¶
它需要3个必填参数
svn-dir
:您的SVN仓库所在目录的路径redmine-host
:您的Redmine安装的主机名key
:启用仓库管理WS选项时从GUI生成的密钥。(从版本0.9开始)
以及两个可选参数(在re. 860中添加)
owner
:仓库的所有者url
:Redmine将使用的基准URL以访问您的
存储库。使用此选项,reposman 将注册新存储库
,这样你就不需要做任何事情
Perl reposman 版本已废弃,因为新安装无法注册和设置所有者。
。
在继续之前你应该回答的问题¶
如果 Redmine 和你的 svn 存储库在同一服务器上,你可以使用 svn 的 file:/// 协议来浏览它们,但如果这似乎是个好主意,如果你以后想在另一个服务器上移动存储库,你会遇到问题,因为你在 Redmine 中无法更改存储库路径。
最佳做法是将其设置得好像存储库和 Redmine 已经在两个不同的服务器上,并使用网络子版本控制来允许 Redmine 浏览。
如果你想使用本地浏览(file:/// 协议),请使用 --url file:///var/svn/
而不是。
自动化存储库创建以使用 apache/webdav 和 mod_perl 进行身份验证¶
在继续之前,我们将检查 reposman 是否可以找到 Redmine Web 服务。 请以无法写入 /var/svn 的非特权用户身份执行此操作
ruby reposman.rb --redmine my.redmine.host --svn-dir /var/svn --owner www-data --url http://my.svn.server/svn/ --key=my_api_key --verbose querying Redmine for projects... retrieved 2 projects treating project myproject svnadmin: Repository creation failed ...
创建失败是正常的,你没有账户权限,但关键是 reposman 可以找到 Web 服务和项目。
如果这不起作用,请确保你已经检查了 启用 WS 以进行存储库管理 选项。
现在你已知一切正常,你只需以 root 身份使用正确选项调用 reposman.rb 即可
reposman.rb --redmine my.redmine.host --svn-dir /var/svn --owner www-data --url http://svn.server/svn/ --key=my_api_key
请注意 --url
选项,一旦更改主意,你无法更改它。
现在你可以在你的 crontab 中添加此行
cat /etc/cron.d/redmine 10 * * * * root ruby reposman.rb --redmine my.redmine.host --svn-dir /var/svn --owner www-data --url http://my.svn.server/svn/ --key=my_api_key >> /var/log/reposman.log
一切都准备好了。
Web 服务和安全¶
为了提高安全性(除了已注册的 API 密钥外),你可以使用 apache(如果你不使用 apache,你需要做自己的作业...)的 Location apache 指令来阻止对 WS 的访问,如下所示
<Location /sys> Order deny,allow Allow from ip.of.my.svn.server Deny from all </Location>
所以如果你使用 apache 和 mongrel,你将得到如下内容
<VirtualHost *:80> ServerName redmine.my.domain ServerAdmin webmaster@localhost <Location /sys> Order deny,allow Allow from ip.of.my.svn.server Deny from all </Location> ProxyPass / https://127.0.0.1:3000/ ProxyPassReverse / https://127.0.0.1:3000/ </VirtualHost>
现在你可以转到 Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl 来为你的用户启用 apache 访问
另请参阅 SCM Creator 插件。
由 Giovanni Toraldo 更新 超过 11 年前 · 26 次修订