2009-08-18 63 views
2

我在Mac OS X上安裝了svn客戶端。我不確定它是否隨Mac OS X一起提供,或者當我下載包含Apple's Developer Tools的Xcode時。我可以在命令行中運行「svn」,但我不確定文件/應用程序的位置。在Mac OS X上安裝更新的SVN(1.6)以與Xcode集成

當我運行「svn --version」時,它說我安裝了1.4版本。

我注意到,當我嘗試在Xcode中使用SVN時,它不允許我運行命令到運行1.6的服務器。大概是因爲我的客戶端是1.4,它試圖連接到1.6。

該錯誤消息我得到每當我選擇SCM>提交整個項目是:

Error: 155021 (Unsupported working copy format) Description: This client is too old to work with working copy '...'; please get a newer Subversion client

我的問題是我如何更新此svn客戶端1.6,這樣Xcode中仍然可以使用它,希望不需要第三方軟件。

我嘗試使用Xcode and updated SVN中描述的方法,但它沒有工作,但在嘗試更新/提交時仍然收到相同的錯誤消息。注意:嘗試使用此方法時,我注意到它們具有root/usr/lib /文件夾,但我使用ln命令和/Developer/SDKs/MacOSX10.5.sdk/usr/lib/文件夾,因爲這就是我所有具有相似名稱的文件所在的位置。因此,例如,以替代線路:

ln -s -f /opt/subversion/lib/libapr-1.dylib /usr/lib/libapr-1.dylib

我換成每一行看起來像這樣:

ln -s -f /opt/subversion/lib/libapr-1.dylib /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libapr-1.dylib

,然後我跑的文件。這是正確的做法嗎?

當我去SCM>,但它顯示我的資料庫(我想這意味着它可以成功使用SVN 列表命令,導致這就是它顯示在底部)。


還有其他想法嗎?

我認爲可以幫助的一些東西是,如果有辦法找出文件svn在命令行中的位置。有什麼方法可以找出它的位置?

我正在使用Xcode版本3.1.3。

感謝您的幫助。


更新:讀一些答案後,我更好地理解它。所以現在我也安裝了包含SVN 1.6客戶端的SCPlugin。我希望Xcode和SCPlugin一起工作,因此我需要更新客戶端Xcode使用的1.6版本。

我使用了'which svn'命令,它顯示svn位於/ usr/bin /文件夾中。我沒有意識到我有/ usr /文件夾(Mac OS X新手......在finder中沒有看到它,所以我認爲它不存在)。我導航到/ usr /文件夾,並找到所有libsvn_ *文件,這意味着我不需要修改腳本以使用/Developer/SDKs/MacOSX10.5.sdk/usr/lib/,所以我稍微調整了一下.sh文件從they recommend here

第一個變化是擺脫Delta替換Diff的第一次出現。這是因爲最後兩行將已經使用Diff來替換Diff,所以它是多餘的,並且當您提交文件時會導致出現一條消息。我改變的另一件事是添加'cp'行,將所有原始快捷方式複製到根目錄/備份/文件夾,您應該手動創建。這讓我第一次意外地運行它並替換了/Developer/SDKs/MacOSX10.5.sdk/usr/lib/中的文件......我剛剛通過使用mv命令複製了所有文件,並且所有文件都恢復了原樣它原來是。

如果有人想運行它,這是我跑的版本:

cp -R /usr/lib/libapr-1.dylib /backup/libapr-1.dylib 
ln -s -f /opt/subversion/lib/libapr-1.dylib /usr/lib/libapr-1.dylib 
cp -R /usr/lib/libapr-1.0.dylib /backup/libapr-1.0.dylib 
ln -s -f /opt/subversion/lib/libapr-1.dylib /usr/lib/libapr-1.0.dylib 
cp -R /usr/lib/libaprutil-1.dylib /backup/libaprutil-1.dylib 
ln -s -f /opt/subversion/lib/libaprutil-1.dylib /usr/lib/libaprutil-1.dylib 
cp -R /usr/lib/libaprutil-1.0.dylib /backup/libaprutil-1.0.dylib 
ln -s -f /opt/subversion/lib/libaprutil-1.dylib /usr/lib/libaprutil-1.0.dylib 
cp -R /usr/lib/libsvn_client-1.dylib /backup/libsvn_client-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_client-1.dylib /usr/lib/libsvn_client-1.dylib 
cp -R /usr/lib/libsvn_client-1.0.dylib /backup/libsvn_client-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_client-1.dylib /usr/lib/libsvn_client-1.0.dylib 
cp -R /usr/lib/libsvn_fs_fs-1.dylib /backup/libsvn_fs_fs-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_fs_fs-1.dylib /usr/lib/libsvn_fs_fs-1.dylib 
cp -R /usr/lib/libsvn_fs_fs-1.0.dylib /backup/libsvn_fs_fs-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_fs_fs-1.dylib /usr/lib/libsvn_fs_fs-1.0.dylib 
cp -R /usr/lib/libsvn_fs-1.dylib /backup/libsvn_fs-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_fs-1.dylib /usr/lib/libsvn_fs-1.dylib 
cp -R /usr/lib/libsvn_fs-1.0.dylib /backup/libsvn_fs-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_fs-1.dylib /usr/lib/libsvn_fs-1.0.dylib 
cp -R /usr/lib/libsvn_ra_local-1.dylib /backup/libsvn_ra_local-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra_local-1.dylib /usr/lib/libsvn_ra_local-1.dylib 
cp -R /usr/lib/libsvn_ra_local-1.0.dylib /backup/libsvn_ra_local-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra_local-1.dylib /usr/lib/libsvn_ra_local-1.0.dylib 
cp -R /usr/lib/libsvn_ra_svn-1.dylib /backup/libsvn_ra_svn-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra_svn-1.dylib /usr/lib/libsvn_ra_svn-1.dylib 
cp -R /usr/lib/libsvn_ra_svn-1.0.dylib /backup/libsvn_ra_svn-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra_svn-1.dylib /usr/lib/libsvn_ra_svn-1.0.dylib 
cp -R /usr/lib/libsvn_ra-1.dylib /backup/libsvn_ra-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra-1.dylib /usr/lib/libsvn_ra-1.dylib 
cp -R /usr/lib/libsvn_ra-1.0.dylib /backup/libsvn_ra-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra-1.dylib /usr/lib/libsvn_ra-1.0.dylib 
cp -R /usr/lib/libsvn_wc-1.dylib /backup/libsvn_wc-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_wc-1.dylib /usr/lib/libsvn_wc-1.dylib 
cp -R /usr/lib/libsvn_wc-1.0.dylib /backup/libsvn_wc-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_wc-1.dylib /usr/lib/libsvn_wc-1.0.dylib 
cp -R /usr/lib/libsvn_repos-1.dylib /backup/libsvn_repos-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_repos-1.dylib /usr/lib/libsvn_repos-1.dylib 
cp -R /usr/lib/libsvn_repos-1.0.dylib /backup/libsvn_repos-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_repos-1.dylib /usr/lib/libsvn_repos-1.0.dylib 
cp -R /usr/lib/libsvn_subr-1.dylib /backup/libsvn_subr-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_subr-1.dylib /usr/lib/libsvn_subr-1.dylib 
cp -R /usr/lib/libsvn_subr-1.0.dylib /backup/libsvn_subr-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_subr-1.dylib /usr/lib/libsvn_subr-1.0.dylib 
cp -R /usr/lib/libsvn_delta-1.dylib /backup/libsvn_delta-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_delta-1.dylib /usr/lib/libsvn_delta-1.dylib 
cp -R /usr/lib/libsvn_delta-1.0.dylib /backup/libsvn_delta-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_delta-1.dylib /usr/lib/libsvn_delta-1.0.dylib 
cp -R /usr/lib/libsvn_diff-1.dylib /backup/libsvn_diff-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_diff-1.dylib /usr/lib/libsvn_diff-1.dylib 
cp -R /usr/lib/libsvn_diff-1.0.dylib /backup/libsvn_diff-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_diff-1.dylib /usr/lib/libsvn_diff-1.0.dylib 

現在如果我執行「svn --version」,它顯示爲客戶1.6.3是完美的。 Xcode的工作也完美無瑕。感謝幫助我瞭解最新進展的答案。

回答

1

你得到的錯誤是因爲在某些時候你已經設法讓你的機器上運行1.6版本的客戶端。我認爲這發生在您嘗試升級時。

發生這種情況是因爲一旦客戶端看到一個工作副本,就會將其升級到當前版本。所以你用1.6客戶端運行,它升級了工作副本,現在你再次使用1.4客戶端,所以你得到了你看到的錯誤。

這與服務器本身無關 - 如果您使用新客戶端提交當前工作副本,然後刪除工作副本並使用xcode重新簽出,那麼您就可以繼續工作了(與老客戶仍然)。

1.4客戶可以很高興地與1.6服務器通話,你只是沒有得到1.6的所有功能,如合併跟蹤和改進的樹衝突。

至於找出其中的svn客戶端,做了命令:一OSX系統上

which svn 

工作?

+0

感謝您的幫助,'which svn'命令在OS X上的工作,它顯示它在/ usr/bin/svn。這使我找到了我正在尋找的解決方案。 – Senseful 2009-08-18 19:19:23

1

Presumably because my client is 1.4 and it's trying to connect to 1.6.

不是。問題是檢出的本地工作副本的格式。當您使用較新的svn客戶端觸摸它時,.svn文件夾中的元數據會自動升級爲新的格式,例如簽出svn 1.4.x並與svn 1.5.y一起使用。一旦發生此升級,舊客戶端將無法再使用該工作副本。

的解決方案是

  1. 升級你的svn的客戶之一,所以它們是同一版本(推薦)
  2. 或檢查出一個新的工作副本
  3. 或使用downgrade script作爲 解釋here

選項(2)和(3)要求您不要不小心觸摸工作副本與newe再次,svn客戶,所以(1)真的是更可取的。