專案

一般

設定檔

動作

自動建立儲存庫

總覽

從 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 個版本