在Mac OS X上安装更新的SVN(1.6)以与Xcode集成

时间:2009-08-18 06:44:22

标签: svn xcode

我在Mac OS X上安装了一个svn客户端。我不确定它是Mac OS X附带还是下载了包含Apple's Developer Tools的Xcode。我可以从命令行运行“svn”,但我不确定文件/应用程序的位置。

当我运行“svn --version”时,它说我安装了1.4版本。

我注意到当我尝试在Xcode中使用SVN时,它不允许我向运行1.6的服务器运行命令。大概是因为我的客户端是1.4并且它正在尝试连接到1.6。

每当我选择 SCM >时,我会收到错误消息提交整个项目是:

  

错误:155021(不支持的工作副本格式)说明:此客户端太旧而无法使用工作副本'...';请获得更新的Subversion客户端

我的问题是如何将此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 list 命令,导致它在底部显示的内容)。


还有其他想法吗?

我认为可以提供帮助的一些事情是,如果有办法找出文件 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/所以我使用了一个稍微调整过的来自they recommend here的.sh文件。

第一个变化是摆脱Delta替换Diff的第一次出现。这是因为最后两行已经使用Diff来替换Diff,因此它是多余的,并且当你sudo sh文件时会出现一条消息。我改变的另一件事是添加“cp”行,将所有原始快捷方式复制到root / backup /文件夹,您应该手动创建。这让我第一次意外地运行它并替换/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也可以完美运行。感谢您的答案,帮助我了解更好的情况。

2 个答案:

答案 0 :(得分:1)

您获得的错误是因为您在某些时候设法在您的计算机上运行版本1.6客户端。我认为这发生在您尝试升级的时候。

发生这种情况是因为只要客户端看到工作副本,它就会将其升级到当前版本。所以你使用1.6客户端运行,它升级了工作副本,现在你再次使用1.4客户端,所以你得到了你看到的错误。

这与服务器本身无关 - 如果你使用新客户端提交当前工作副本,然后删除工作副本并使用xcode进行新的结账,你将会再次工作并没有问题(和老客户一起)。

1.4客户端可以非常愉快地与1.6服务器通信,您只是没有获得所有1.6功能,例如合并跟踪和改进的树冲突。

至于找出svn客户端的位置,是否有命令:

which svn

在osx系统上工作?

答案 1 :(得分:1)

  

大概是因为我的客户是1.4   并且它正在尝试连接到1.6。

没有。问题是您签出的本地工作副本的格式。当您使用较新的svn客户端触摸时,.svn文件夹中的元数据会自动升级为新格式,例如:使用svn 1.4.x签出并与svn 1.5.y一起使用。一旦发生此升级,旧客户端将无法再使用工作副本。

解决方案是

  1. 升级您的一个svn客户端,使它们处于相同的版本(首选)
  2. 或查看新的工作副本
  3. 或使用downgrade script作为 解释here
  4. 选项(2)和(3)要求您不要再次使用较新的svn客户端意外触摸工作副本,因此(1)确实更可取。