專案

一般

個人檔案

動作

解析 SVN 輸出時發生錯誤

背景

Redmine 是運行在網頁伺服器(Apache 等)上的 Rails 應用程式。
而 Redmine 會在網頁伺服器上呼叫「svn」指令。
因此,您需要正確配置網頁伺服器程序的 uid
檢查您的網頁伺服器 uid 是什麼。
(例如「ps -ef」、「top」)

簡介

如果在新增儲存庫後,在「儲存庫」頁籤上收到「在儲存庫中找不到項目或修訂版」的錯誤訊息,請檢查您的記錄資料夾(例如 /var/log/redmine/default)中的 production.log。

如果您在 production.log 中發現此錯誤,則可能是 Redmine 使用者執行 svn 指令時發生錯誤

解析 SVN 輸出時發生錯誤:#<REXML::ParseException: 找不到 /lists/list 的結尾標籤>

(Redmine 仍然嘗試將 svn 指令的輸出解析為 XML,但錯誤訊息並非以 XML 格式呈現,因此發生解析錯誤。)

若要進行疑難排解,請嘗試以 Redmine 使用者的身分執行指令,以查看錯誤訊息,例如

sudo -u www-data svn list --xml 'https://svn.server.address/reponame'@HEAD

(您可能需要將「www-data ALL=(ALL) NOPASSWD:ALL」新增至 /etc/sudoers)

現在解決錯誤,以便您每次都能從指令中取得乾淨的 XML。

如果您每次都需要接受伺服器的憑證,則需要為 Redmine 使用者提供一個目錄來儲存 svn 設定。在某處建立一個目錄,並確保 Redmine 使用者是擁有者,例如

sudo mkdir /usr/share/redmine/svn

sudo chown www-data:www-data /usr/share/redmine/svn

Redmine 1.1.x 或更早版本 上,
開啟 REDMINE_ROOT/lib/redmine/scm/adapters/subversion_adapter.rb 並前往第 27 行
來源:tags/1.1.3/lib/redmine/scm/adapters/subversion_adapter.rb#L27
並將

SVN_BIN = "svn"

變更為,例如

SVN_BIN = "svn --config-dir /usr/share/redmine/svn"

現在,您應該可以永久接受憑證了。

如果您(在使用 svn list --xml URL 測試後)收到「svn: 無法解析 URL」的訊息,請檢查您安裝的 SVN 用戶端版本。舊版本在處理檔名中包含空格時會出現問題,請更新至最新版本以解決此問題。

TODO
Redmine 1.2 或更高版本 上,此行已變更。
來源:tags/1.2.3/lib/redmine/scm/adapters/subversion_adapter.rb#L35

Windows 上 Bitnami Redmine 安裝的注意事項

預設情況下,Redmine 伺服器(2.0 以上版本為 Thin)會在 System 帳戶下執行,但如果 SVN 伺服器的 SSL 憑證有誤,則無法運作。解決方案是將程序帳戶變更為具有登入權限的服務使用者,連線到 SVN 並永久接受該使用者的憑證。別忘了將負載平衡中執行的兩個 ThinMongrel 服務的使用者也一併變更。

另一個解決國會接受錯誤 SVN 憑證的可能方法是使用 psexec。以下指令顯示 系統使用者 帳戶的控制台,可以在其中發出 svn 指令並永久接受憑證

psexec -i -s cmd.exe

scm\adapter\abstact_adapter.rb 中的 Redmine 程式碼應該攔截連線錯誤,並且不應該依賴 "No close tag for /lists/list>" 來通知我們這個問題。在開發環境中執行時,stderr 會被記錄下來,但在生產環境中就不是很有用。

使用 SSH 搭配 SVN 時出現「SVN:連線意外關閉」

當您執行

sudo -u www-data svn list --xml 'svn+ssh://svn.server.address/reponame'@HEAD

並收到錯誤訊息「SVN:連線意外關閉」,您可以在託管 svn 儲存庫的機器上為 www-data 使用者啟用 shell。
只要編輯 /etc/passwd 並將相應使用者的項目更改為以 /bin/bash 結尾,而不是 /bin/false 或 /sbin/nologin 即可。
這應該可以解決問題。

來源
https://redmine.dev.org.tw/boards/2/topics/11896
http://www.thinkplexx.com/learn/howto/scm/svn/fix-permanent-error-validating-server-certificate-problem-with-subversion

Andrey Ivanov6 個月 前更新 · 13 個修訂