开发环境篇:xcode自带Source Control Manager(SCM)以及SnapShots用法简介

前几天我在坛子里发了一个贴子是请问大家都用什么来管理自己的source code,因为随着代码的更新,客户需求的变化我们总是需要时常的去改变代码,或者是用这当前的代码去做测试,但是总有不注意忘备份的时候,所以我自己经常是写测试代码的时候把源文件改的一塌糊途, 后来了解到在mac上, Xcode已经自带了一些管理代码的形式,所以认真的学习了一下,现在把我的学习成果分享给大家,在这里我也要先谢谢lvyile, 在学习xcode SCM配置subview的时候,是他给了我很大的帮助, 也更加激励了我认真去了解SCM的特性,再此先谢谢lvyile了.

1.先说说XCode自带的SCM工具吧,这个工具主要是为了项目组内大家共享同一份代码,将source code放在服务器上,当然用于个人的代码管理也是很不错的啊1.1 先说说配置服务器,主要是先要建一个svn的库(我主要以本机当服务器用来配置,如果单独使用别的配置也是一样, 详见http://www.cocoachina.com/bbs/htm_data/2/0808/317.html打开终端->cd到想要安装的目录下->svnadmin create-> svnadmin create lib,见图 
 
1.2 xcode SCM端的配置 
 
这些都是yile教我的啊,呵呵,谢谢喽.1.3 配置Repositories通过XCode菜单的SCM选项,选择Repositories,在这里大家应该都可以看到自己已经增加的Repositories,如上图所示的应该就是test, 通过Import可以导入工程文件(这里请记住导入的工程要把build文件夹删除,不然以后同步的时候会出错,因为这个里面包含有很多用户信息以及系统的配置信息), Check out选项可以下载下最新的source code, 后面的create Directory, Copy, Move, Delete就不一一说明了,我想大家一用就能明白.  
 1.4 使用SCM管理工程打开工程后在Xcode->SCM菜单里,选择confiure SCM for this project...出现如下对话框,选择自己的Repositories,如下图选择的是TestSVN 
 
下面看看我们想要看到的重心,在选择工程文件->get Info,可以调出对话框 
 
当然对于每一个文件的话,也可以选择文件->get Info,调出同样的对话框,这里我们可以看到自己对文件的注解,以及修改记录,可以选择任一次记录与当前的工程进行比较,也可以update到某一个revision. 也可以通过XCode->SCM的子菜单来进行操作 
刚对一个文件进行更改或是更新后都会标示出来,如下所示: 
 
文件的标示状态简介如下: 
 
当更改完代码后可以选择文件或是工程,然后选择commit changes...觉的有一点一定要提示的是:对于一个文件工程有project file和user file, project file是以project.xcodeproj命名的,如果我们改动架构性的东西时,一定要同时commit此文件,比如说我们增加或是删除一个文件时,当我们同步增加的文件到repositories的时候,也要同时同步project.xcodeproj文件
再看一下SnapShot功能吧,这个功能好像只是在XCode 3.0以后才加上的, 这个功能用来管理个人的source code是很好用的,但是不能协同工作,下面我也简单的介绍一下吧.
1. 首先当我们打开一个工程后,在File菜单下有Make Snapshot和Snapshots这二项,整个的使用我们可以全部靠这二个菜单项目来完成. 
 
2. 当选择一次Make Snapshot后,你打开SnapShots对话框就可以看到你做的处理,当然你可以进行注解 
 

 
3. 管理工程
当你看到上面的对话框时,我想你基本上已经会使用了,对, 使用起来就是这么简单的,你可以restore到你任何状态,也可以对二个文件进行比较,注解等. 当然后有一点我觉的我有责任要弄清楚就是如果我们换一台机器是不是这个就会丢失了?不是的, 在~/Library/Application Support/Developer/Shared/SnapshotRepository.sparseimage目录下保存的就是Snapshots的信息,当你换机器了,你也不会丢失关于工程的历史改动信息,不过需要配置一下,SnapshotReository里面的一个plist文件,因为这里保存了你原始工程的路径等常用信息,不过我相信大家一看就能明白.

希望我的学习经历能给大家带来一些帮助,当然前面讲到SCM的使用时,在配置时也有SVS, perforce等,我也不是很清楚他们之前的差别,还请高手也解释一下,希望我可以达到抛砖的作用.