Windows 平台下的 SVN+SSH 設定注意事項 
還記得先前為了管理與備份之便,我將所有的 Subversion 檔案庫全部集中到 svn 這個使用者的家目錄下,並由 svn 統一管理權限設定及自動備份作業,此部份可參考
實作 Subversion 檔案庫自動備份機制 相關的說明。
日來為了透過 SSH 取出 Subversion 上的程式,在 Google 上找了不少如何在 Windows 上使用 SVN+SSH 協定的方式,步驟簡列如下:
- 確認 SVN Server 上已開放 SSH 服務。
- 啟用 Windows 上 SVN 設定檔中的 tunnels 區段設定,告知 SVN 必須透過何種工具進行 SSH 連線。
- 完成 svnserv 權限設定
開啟近端 SVN 設定檔的 tunnels 區段設定
開啟 %APPDATA%\Subversion\config 檔,加入以下設定;其中 plink.exe 是 putty 連線工具組的一部份,可在
Putty 下載頁面 處下載,記得要放在 PATH 可以搜尋到的路徑下。有些說明文件會採用別的 SSH 連線工具,請依該連線工具之設定方式完成 SSH 連線準備。
[tunnels]
# plink 不一定要使用 public/private key 方式登入
ssh = plink.exe -l ada -pw thisismypassword
完成 SSH(plink) 連線設定後其實就可以進行連線測試,若一切設定正確應該可以取得類似以下內缺 author 及 date 資訊的訊息:
C:\>svn log svn+ssh://your.svn.server/home/svn/projects/perl
--------------------------------------------------------------
r2 | (no author) | (no date) | 1 line--------------------------------------------------------------
r1 | (no author) | (no date) | 1 line--------------------------------------------------------------
當出現前述訊息時即表示 Windows 端的設定已經成功,此處無法取得完整 log 訊息的原因則是因為權限不足的關係。事實上此時若想要 checkout 程式碼時將收到
svn: 授權失敗 的訊息,如下例:
C:\>svn co svn+ssh://your.svn.server/home/svn/projects/perl
svn: 授權失敗
完成遠端 svnserv 權限設定
svnserv 的權限限制是透過 authz (在 svnserve.conf 中指定)設定的,與 svn:// 連線方式相比可以發現 URI 的部份多了 /home/svn 這一段字樣,其實這就是造成授權失敗的關鍵因素:authz 中沒有此項設定。
所以把完整的檔案庫路徑加上去吧,如下例:
[home/svn/projects/perl:/]
ada = rw
連線測試
當補足了前述的檔案庫權限設定後,即可由近端 Windows 平台操作遠端 Subversion 檔案庫了,如下範例:
C:\>svn log svn+ssh://your.svn.server/home/svn/projects/perl
------------------------------------------------------------------------
r2 | ada | 2007-08-28 16:22:00 +0800 (星期二, 28 八月 2007) | 3 lines1. 補設定 svn:keywords------------------------------------------------------------------------
r1 | ada | 2007-08-28 16:13:56 +0800 (星期二, 28 八月 2007) | 2 lines初始化 perl 工具箱------------------------------------------------------------------------