自動建立儲存庫¶
總覽¶
從 0.5.0 版開始,Redmine 可以處理 Subversion 儲存庫的建立。這是透過位於 extra/svn/ 的 reposman.rb 腳本來完成的。使用最新版本的 Redmine(0.6.0 或 re. 860 及更高版本),reposman.rb 可以為您在 Redmine 中註冊新的儲存庫,並將儲存庫的所有者設定為您想要的人。如果您使用的是舊版本,則必須自行註冊儲存庫。
專案是使用 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 已經在兩台不同的伺服器上,並使用網路 subversion 允許 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 的 Location 指令阻止對 WS 的訪問(如果您不使用 apache,則必須自己想辦法...),如下所示
<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>
您現在可以前往 使用 apache mod_dav_svn 和 mod_perl 控制儲存庫訪問 為您的用戶啟用 apache 訪問權限
另請參閱 SCM Creator 插件。
由 Giovanni Toraldo 更新於 超過 11 年前 · 26 個版本