我在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也可以完美运行。感谢您的答案,帮助我了解更好的情况。
答案 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
一起使用。一旦发生此升级,旧客户端将无法再使用工作副本。
解决方案是
选项(2)和(3)要求您不要再次使用较新的svn客户端意外触摸工作副本,因此(1)确实更可取。