我正在为一个小团队(我和另一个人)的努力开发一个Mac应用程序。我们位于不同的城市,并开始看到对固体源控制管理的需求。
我们都没有这方面的经验,我们俩都对Cocoa / Obj-C / Xcode相对较新(但确实有C知识)。
是否有人建议选择哪个SCM系统?我知道很多人都在使用Subversion,Xcode 3.1也支持Subversion。有没有人有通过Xcode使用Subversion的经验?或者,选择独立的GUI替代方案(如版本?
)是一个更好的选择感谢任何有关此事的意见。
Gregor Tomasevic, 瑞典
更新/个人经历: 从这篇文章开始,我们尝试了Versions和Cornerstone(两者都是SVN GUI客户端),以及Xcodes内置的SVN支持。我们对版本并不特别满意,因为版本似乎在提交未版本控制的文件/构建文件方面存在一些问题。 Xcode中内置的SVN支持非常有效,尽管它可能存在我们尚未遇到的限制。 Cornerstone既易于使用又功能强大,并且似乎没有遇到我们遇到的版本问题。
到目前为止,我们刚刚尝试提交,更新repo,检查我们文件的最新/以前版本,并进行了一些文件比较。一旦你开始广泛地进行分支工作,这可能是一个完全不同的球类游戏,我们已经告诉他们这些GUI客户端可能都有一些缺点。
对于它的价值(并且只有几天的评估)Cornerstone似乎是一个更好的选择,虽然对于更简单的SCM,Xcode也可以很好地工作。
感谢所有评论。
答案 0 :(得分:20)
Xcode仅支持Subversion,Perforce和CVS。但是,还有分布式版本控制系统,例如Mercurial,Bazaar和Git。它们没有Mac原生的GUI,但你仍然应该考虑它们。就个人而言,我喜欢在Mercurial存储库中管理我的项目。
[已添加2011-03-10] Xcode 4增加了对Git的支持。我们中的一些人已提出Mercurial支持请求;你也应该如果你想要的话。
答案 1 :(得分:14)
Mac上的Mercurial有一个很棒的GUI前端,名为MacHG:http://jasonfharris.com/machg/
这是免费的,非常好的恕我直言。
答案 2 :(得分:6)
Xcode的Subversion支持非常好。我执行的SVN活动中有90%可以通过Xcode轻松完成。对于其他一些事情,我只是启动终端。
他们的SVN客户端实现中有一些令人讨厌的事情:
总的来说,我推荐它。
答案 3 :(得分:6)
使用Subversion确实不会出错。
如果像我一样,你不喜欢Xcode的SVN集成太多,你总是可以选择使用命令行工具,或者像Versions,CornerStone或SvnX这样的GUI应用程序之一。这些工具中的大多数都可以很好地协同工作,因此您不必与开始使用的工具联系在一起。
我个人大部分时间都在使用版本,并且每隔一段时间就使用相同工作副本的命令行工具。
如果你习惯使用命令行工具,直到某人创建一个好的GUI应用程序,git也是一个非常可行的选择。
披露:我是处理版本的人之一,所以我可能会有点偏见;)
答案 4 :(得分:5)
警告:如果你只是告诉XCode通过给它一个顶级目录将项目添加到存储库,它会将构建目录添加到存储库,这当然是一件非常糟糕的事情。
为了解决这个问题,你必须将构建目录移动到另一个位置,以便XCode不会尝试导入它,或者逐个手动添加项目的离散文件夹。
答案 5 :(得分:3)
Subversion是传统的OS X源代码控制解决方案,在Leopard中它支持Xcode和OS X,更不用说第三方GUI应用程序(其中一些看起来非常流畅)。尽管如此,很多独立的OS X开发人员在过去一两年内都转而使用Git。作为一名开发人员,我可以告诉你Git对我来说是一个非常好的解决方案,与Github一起为小团队的努力提供了一个很好的解决方案。
答案 6 :(得分:2)
如果您有兴趣在OS X上使用Mercurial,请尝试使用SourceTree,它不是免费的,但价格具有竞争力,并且具有非常优秀的Mac OS感觉。在过去的几个月里,我一直在将它用于个人项目,并且发现它非常直观且相当稳健。
它可通过Mac App Store获得,并支持Git和Mercurial。他们在http://www.sourcetreeapp.com/有一个网站,提供更多信息。
答案 7 :(得分:1)
如果你想要颠覆,我听说过关于Springloops的好话。我也以类似的方式与一些朋友一起编码,我们使用Github。 Git是一次非常棒的体验。我不使用任何GUI,因为我在shell提示符下效率更高。但是,当然,如果Xcode支持Git repos,我会欢迎。
答案 8 :(得分:0)
Mercurial(像git)是“分布式的”,也许被认为比svn(但不太成熟)更现代,更新颖。如果您想使用mercurial进行自动签入,可以添加以下行:
hg commit -m“Xcode自动提交”
作为XCode构建的“运行脚本”阶段的一部分,如下所示: 项目>新建阶段>新运行脚本BUild阶段
答案 9 :(得分:0)