2009年6月8日 星期一

解決 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

摘自:http://blog.miniasp.com/post/2008/11/Solve-This-client-is-too-old-to-work-with-working-copy-problem.aspx

補充:XP請至http://www.python.org/download/releases/2.6.2/下載python2.6.2,下載ptyhon3.X會有問題喔~

沒有留言:

wibiya widget