听起来我觉得subversion的集中模型更适合Web应用程序开发,在这种情况下,你有一个工程师团队目前在相同的代码库上工作并不断发布。

另一方面,Git的分布式模型对于iPhone应用程序很有吸引力,因为1)我不需要连接来浏览存储库2)它的速度要快得多3)开发将被共享但不常见。

很抱歉,如果我回答了我自己的问题,我不是故意引发辩论,请随时给出单行答案。

有帮助吗?

解决方案

绝对是git。今年我学到了两件新东西:iPhone编程和git。 虽然iPhone编程让我讨厌我的生活,但是git改进了方式 我开发软件。无痛的分支意味着我可以 为所有创建一个分支,而不告诉世界其他地方,以及什么时候 我完全满意,我可以把它合并回我们非常稳定的 主/中继。

很棒,没有任何压力可以释放任何尚未准备好的东西 因为您可以在本地办理登机手续,所以可以更轻松地创建小型,有用的提交。

我仍未决定使用iPhone。

其他提示

我会投票给你在店里配置的那个。

关于分布式VCS和集中式VCS,您应该意识到的一点是,分布式VCS可以完成集中式VCS的所有工作。使用git,您可以拥有一个公共存储库,代码的权威版本,可以通过多种方式进行管理 - 例如,如果所有开发人员都可以使用它,那么它可以获得有关集中式VCS的所有内容,除了git的所有额外好处,没有CVS / SVN的不足之处。

虽然Xcode有SVN集成,但我发现它是一个非常糟糕的实现。如果您想要替代品,可以查看(对不起双关语)优秀的版本

话虽如此,我基本上是一个单人店(虽然我使用两台机器),我发现git更好用。

在iPhone开发方面,我是一个单人店,我使用的是Mercurial(与git非常相似)。我的决定因素只是我想学习使用分布式源管理系统。

如果你是一个单独的商店,主要区别在于代码分支和合并在git / Mercurial中更容易。一个小小的区别是svn存储库占用了更多的磁盘空间(但在iPhone项目中,这不太可能是一个主要问题)。除此之外,你不太可能注意到那么大的差异。

这是我对源代码管理的一般建议。 Subversion是迄今为止我最喜欢的工具,也是我最有经验的工具。也就是说,我在任何工作站上做的第一件事就是下载并安装SVK,这使你可以断开对subversion存储库的访问(因为我主要使用笔记本电脑,有时在公园或我的后院没有wifi访问)。

Subversion + SVK为您提供git或mercurial或bazaar的大部分好处(尽管我也在评估它们)。我认为Subversion的未来发展将增加SVK / git / Hg功能以支持DVCS用例。

所以我建议你不要部署git,如果你已经在使用subversion,而是抓住SVK并继续使用它(加上它相当成熟,它已经存在了几年)。缺点是它有时可能很慢(用perl编写)。

下载SVK

Svn支持内置于Xcode中。您可以手动安装较新的客户端。

如果没有人强迫你使用svn,那么你应该使用git,因为git可以与svn互操作(这意味着,从技术上讲,你可以使用git而你正在使用的人使用svn;这可能太多了虽然麻烦。)

对于XCode集成,git没有,但是使用XCode中的一些键击让git工作并不困难。我编写了一些脚本,这些脚本将用于最常用的git命令,并将它们放在用户脚本中。以下是两个例子:

git initialize

#!/bin/sh
# 
# This script initializes a git repository and adds all the elements 
# of the project directory to the repository


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

cd $project_directory

# create the git project configuration files
cat << EOF > .gitignore
.gitignore
.DS_Store
.gitattributes
build/*
EOF

cat << EOF > .gitattributes
*.pbxproj -crlf -diff -merge
EOF 

/usr/local/bin/git init
/usr/local/bin/git add *

git add

#!/bin/sh
# 
# This script does a git adds a file of the user's choosing
# to the git repository.


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

files_to_add=`%%%{PBXUtilityScriptsPath}%%%/AskUserForExistingFileDialog "Add files"`

cd $project_directory

/usr/local/bin/git add $files_to_add

您可以在此处看到一种模式,可以让您快速写下其他模式。在“用户脚本”中对话,您可以为命令分配键序列。我发现在日常使用中我很少需要去命令行使用git。

我真的不能给你一个明确的答案,因为我已经有一段时间没有使用过CVS或Subversion了 - 但是我已经和其他iPhone开发人员一起使用了Git项目而且效果很好。

唯一的潜在危险是,如果有多个人添加新文件,有时你必须解决XCode项目中的合并冲突 - 但我认为SVN会有类似的问题。

如果您使用git,github.com可以很好地作为存储库 - 并且他们有一套很好的文档可以在Mac上使用Git(您可以访问该网站的某个部分进行设置)。

如何在XCode中升级svn客户端?我在过去做过这件事,从1.4到1.5,但这很繁琐,困难,没有记录,而且很糟糕。我已经试图退出我的黑客(这破坏了我的Apache服务器),现在我根本无法使用它。这是在升级到最新的XCode之后,该XCode本应支持1.5。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top