The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

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

相關連結