使用SVN 1.8.3与Xcode 5。

6
我将系统上的Subversion客户端更新到了1.8.3。我从Xcode 5的Source Control菜单中检出了我的存储库。然后在终端中打开该目录并执行svn update命令进行检查。我收到以下消息 -
“'/ Path'上的工作副本太旧(格式29),无法与客户端版本'1.8.3(r1516576)'(期望格式31)一起使用。您需要首先升级工作副本。”
如果我升级我的副本,我将无法访问Source Control菜单选项,因为该版本对于XCode 5来说太高了。
后来我找到了这个XCode 5 Features Link,其中提到Xcode的SVN版本为1.7.9。
  1. 我不明白为什么我的系统上有两个版本的SVN(一个由Xcode维护,版本号为1.7.9,另一个为1.8.3)
  2. 我该如何与1.8.3和Xcode 5一起使用。我真的想要使用XCode的GUI。
3个回答

23

在Xcode 5中,写入“defaults”将无效。更新版本的Xcode自带自己的位于以下位置的SVN二进制文件:

/Applications/Xcode.app/Contents/Developer/usr/bin/

如需升级Xcode的SVN客户端至1.8,您需要替换此二进制文件。假设您的新SVN客户端位于/usr/local/bin/(默认brew安装路径),请在终端中输入以下内容:

cd /Applications/Xcode.app/Contents/Developer/usr/bin/
sudo mv ./svn ./svn.org
sudo mv ./svnadmin ./svnadmin.org
sudo mv ./svndumpfilter ./svndumpfilter.org
sudo mv ./svnlook ./svnlook.org
sudo mv ./svnrdump ./svnrdump.org
sudo mv ./svnserve ./svnserve.org
sudo mv ./svnsync ./svnsync.org
sudo mv ./svnversion ./svnversion.org

sudo ln -Ff /usr/local/bin/svn svn
sudo ln -Ff /usr/local/bin/svnadmin svnadmin
sudo ln -Ff /usr/local/bin/svndumpfilter svndumpfilter
sudo ln -Ff /usr/local/bin/svnlook svnlook
sudo ln -Ff /usr/local/bin/svnrdump svnrdump
sudo ln -Ff /usr/local/bin/svnserve svnserve
sudo ln -Ff /usr/local/bin/svnsync svnsync
sudo ln -Ff /usr/local/bin/svnversion svnversion

我使用 Xcode 5.1 和 SVN 1.8.8 完成了这个任务,完全没有遇到任何问题。


我的 /usr/bin svn 位置中没有 svnrdump。不确定如何匹配它们。 - Miek
那么不要执行这两行命令: sudo mv ./svnrdump ./svnrdump.org sudo ln -Ff /usr/local/bin/svnrdump svnrdump - Aron Lindberg
1
它能够在Xcode 6.4上正常工作,但是在Xcode 7中,它始终显示“认证失败,因为用户名或密码不正确”,但我确定它们是正确的。有什么想法如何修复它? - C. Leung
我非常确定每次XCode更新时都会被覆盖,对吗? - Jeremy

9
  1. These are simply two different client applications.
  2. You can set the path to XCode's subversion client by setting XCSubversionToolPath, e.g. (replace with actual svn 1.8 path):

    defaults write com.apple.Xcode XCSubversionToolPath /usr/local/bin/svn
    

谢谢!我深入挖掘后发现了一整个Xcode默认设置列表,以后可以用。当我将其设置为正确路径时,我必须进入Xcode中的源代码控制首选项并重新连接它,但现在它能工作了。 - IanStallings
@IanStallings 你做了什么重连吗?你进行了全新的检查吗? - Tushar Koul
这正是我需要做的。我确保所有的代码都已经检入。然后在Xcode中,我执行了“checkout”并在提示时设置了svn仓库信息。 - IanStallings
1
@Eran 我已经尝试过了,但是Xcode根本没有显示更改状态。你知道为什么吗? - aelam

3

对于Xcode 5.1,上述解决方案最终确实适用于我。我已经缩短了上面的代码,请随意根据需要更改你的目录(例如,因为我使用MacPorts,我的svn二进制文件在/opt/local/bin中):

export xcode_dir=/Applications/Xcode.app/Contents/Developer/usr/bin
export svn_files="svn svnadmin svndumpfilter svnlook svnrdump svnserve svnsync svnversion"
export svn_dir=/opt/local/bin
for f in $svn_files; do echo "sudo mv -v $xcode_dir/$f $xcode_dir/$f.bak && sudo ln -s $svn_dir/$f $xcode_dir/$f”; done | bash

此外,如果在更新SVN后遇到问题,请尝试删除project.xcworkspace文件,并确保您正在运行正确的Xcode版本!(我在尝试验证对Xcode.app目录所做更改时仍在运行Xcode 5.1 BETA...这是一个愚蠢的错误,但我花了一段时间才找出来)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接