Xcode的哪个SCM系统?

Gre*_*gor 21 svn macos version-control xcode cocoa

我正在为一个小团队(我和另一个人)的努力开发一个Mac应用程序.我们位于不同的城市,并开始看到对固体源控制管理的需求.

我们都没有任何经验,我们俩都是Cocoa/Obj-C/Xcode的新手(但有C知识).

有没有人建议选择哪个SCM系统?我知道很多人都在使用Subversion,Xcode 3.1也支持Subversion.有没有人有通过Xcode使用Subversion的经验?或者选择独立的GUI替代方案(例如版本)是否是更好的选择?

感谢对此的任何意见.

Gregor Tomasevic,瑞典

更新/个人经历:从这篇文章开始,我们尝试了版本和Cornerstone(两者都是SVN GUI客户端),以及Xcodes内置的SVN支持.我们对版本并不特别满意,因为版本似乎在提交未版本控制的文件/构建文件方面存在一些问题.Xcode中内置的SVN支持非常好,尽管它可能存在我们尚未遇到的限制.Cornerstone既易于使用又功能强大,并且似乎没有遇到我们遇到的版本问题.

到目前为止,我们刚刚尝试提交,更新repo,检查我们文件的最新/以前版本,并进行了一些文件比较.一旦你开始广泛地开展分支工作,这可能是一个完全不同的球类游戏,我们已经告诉他们这两个GUI客户端可能都有一些缺点.

对于它的价值(并且只有几天的评估)Cornerstone似乎是一个更好的选择,虽然对于更简单的SCM,Xcode也可以很好地工作.

感谢所有的评论.

Pet*_*sey 20

Xcode仅支持Subversion,Perforce和CVS.但是,还有分布式版本控制系统,例如Mercurial,Bazaar和Git.它们没有Mac原生的GUI,但你仍然应该考虑它们.就个人而言,我喜欢在Mercurial存储库中管理我的项目.

[已添加2011-03-10] Xcode 4增加了对Git的支持.我们中的一些人已提出Mercurial支持请求; 你也应该如果你想要的话.

  • 我已经听过(但尚未尝试过)gitX(http://gitx.frim.nl/)的git GUI. (2认同)

小智 14

Mac上的Mercurial有一个很好的GUI前端,名为MacHG:http://jasonfharris.com/machg/

这是免费的,非常好的恕我直言.

  • 自从这个问题首次发布以来,情况发生了变化,虽然苹果公司将更多精力投入到与Xcode4集成的SCM中,但MacHG仍然击败了我见过的所有其他视觉SCM客户端 - 包括Xcode4 Dev Preview 2 .因此,虽然Gregor现在可能已经感觉与svn根深蒂固,但任何新手都应该尝试使用Mercurial(即hg)+ MacHg + http://bitbucket.org(如果你需要等效于github)的组合. (3认同)

Dav*_*ant 6

Xcode的Subversion支持非常好.我执行的SVN活动中有90%可以通过Xcode轻松完成.对于其他一些我刚刚启动终端的东西.

他们的SVN客户端实现中有一些令人讨厌的事情:

  • 检查哪些本地文件已被修改的代码似乎在后台计时器上运行,而且非常潜在.有时,Xcode需要5分钟才能显示修改后的文件.同样的事情甚至更夸张w/r/t远程修改.
  • 有时当您重命名或删除不受源代码管理的文件时,会出现一个对话框,询问"您是否希望在SVN中[重命名/删除]此文件?" 选项为"是"或"取消".你绝望地选择是,只是为了得到一个当之无愧的SVN错误.

总的来说,我推荐它.


Dir*_*oop 6

使用Subversion确实不会出错.

如果像我一样,你不喜欢Xcode的SVN集成太多,你可以随时选择使用命令行工具,或者像Versions,CornerStone或SvnX这样的GUI应用程序之一.大多数这些工具都可以很好地协同工作,因此您不必与开始使用的工具联系在一起.

我个人大部分工作都是使用Versions,并且每隔一段时间就使用命令行工具和相同的工作副本.

如果你习惯使用命令行工具,直到有人在它周围创建一个好的GUI应用程序,git也是一个非常可行的选择.

披露:我是使用版本的人之一,所以我可能会有点偏见;)

  • 范式本身并不能带来出色的工作流程.事实上,您可以在命令行客户端,Cornerstone,Versions,SvnX等之间进行选择,这为SVN提供了非常明显的优势. (9认同)
  • 分布式源代码控制系统有许多优点,苹果不支持它们是犯罪行为.在http://hginit.com/上查看Joel Spolsky的Mercurial教程. (2认同)

Gen*_*ich 5

警告:如果你只是告诉XCode通过给它一个顶级目录将项目添加到存储库,它会将构建目录添加到存储库,这当然是一件可怕的事情.

为了解决这个问题,你必须将构建目录移动到另一个位置,以便XCode不会尝试导入它,或者逐个手动添加项目的离散文件夹.