前陣子為了測試一個 TortoiseSVN 的問題,因此改安裝了 Nightly Builds 的版本,當確認問題順利解決後也就沒換到正式的版本了,所以我從今年 9 月份一直用到現在,但今天我將這個版本移除,改安裝目前最新的 TortoiseSVN-1.5.5.14361 版本,卻發生了 "This client is too old to work with working copy" 的錯誤訊息。越想越怪,不是應該都是 1.5 版的 Subversion 嗎?為什麼會有這種匪夷所思的錯誤呢?
查了一個小時後才發現,原來我之前安裝的 Nightly Builds 抓到了 svn-1.6.0 的版本了,所以我這一個半月來所有用過的工作目錄(Working Copy)都被我升級到 1.6 的版本了,所以導致我今天重新安裝 TortoiseSVN-1.5.5.14361 後,許多專案都無法經由 TortoiseSVN 存取!
我透過錯誤訊息上面的連結,找到了解決方法。只要下載一支用 Python 寫的 Script ( change-svn-wc-format.py ) 並對我無法存取的工作目錄執行以下指令即可:
c:\change-svn-wc-format.py C:\Projects\TEST\TESTWC 1.5
其中第一個參數是「工作目錄」的路徑。第二個參數是要改變工作目錄的版本編號,因為我的工作目錄之前被升級到 1.6 了,所以我必須指定 1.5 把版本降下來!
而我轉換了十幾個專案,其中有一個專案轉換會失敗,我多使用了 --force 參數解決此問題,例如:
c:\change-svn-wc-format.py C:\Projects\TEST\TESTWC 1.5 --force
若執行成功會顯示以下結果:
Converted WC at 'C:\Projects\TEST\TESTWC' into format 9 for Subversion 1.5
以下是目前 subversion 的版本與格式編號的對應關係:
- 1.4 ==> 8
- 1.5 ==> 9
- 1.6 ==> 10
你可以從任意一個 _svn 或 .svn 目錄下找倒一個名叫 format 的檔案,裡面會有你專案 Working Copy 目錄的版本。只不過直接改這個檔案的內容是沒用的,還是要透過 change-svn-wc-format.py 工具幫你修改工作目錄才行。
我還發現一點,透過 change-svn-wc-format.py 工具修改過的工作目錄,有些 format 檔案會變成 9,但有些不會,我不太確定為什麼會這樣,不過反正 TortoiseSVN 1.5 都可以正常操作就是了。
最後,我補充一個好用的 DOS 指令,可以一次針對目前目錄下所有的 Working Copy 進行轉換動作:
c:\Projects>for /D %d IN (*) DO d:\change-svn-wc-format.py "%d" 1.5
相關連結