Tuesday, August 11, 2009

解決 This client is too old to work with working copy 的問題

解決 This client is too old to work with working copy 的問題
前陣子為了測試一個 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

相關連結
I got an error saying "This client is too old to work with working copy '...' ". How can I fix it without upgrading Subversion?
Download Standard Python Software

No comments: