1.版本管理工具包括




2.实际使用步骤:

    1. 安装SVN服务器

    2. 创建仓库

    3. 创建用户

    4. 为仓库添加用户

    5. 经理初始化项目并进行忽略xcuserdata操作

    6. 其他同事Checkout检出进行开发

源代码,需求文档,接口文档,效果图, 源代码一般先分配只读权限,熟悉代码之后再分配Write权限


3.SVN服务器安装:

  Windows:安装Visual SVN Server(项目经理或系统维护人员操作)

 1. 安装SVN 服务器

 

iOS版本管理工具SVN_文件名

 

iOS版本管理工具SVN_svn_02

                    

iOS版本管理工具SVN_服务器_03

iOS版本管理工具SVN_svn_04

iOS版本管理工具SVN_服务器_05


2.创建仓库

iOS版本管理工具SVN_服务器_06

iOS版本管理工具SVN_svn_07

iOS版本管理工具SVN_svn_08

                                    

3. 创建用户

 

iOS版本管理工具SVN_文件名_09

                       

iOS版本管理工具SVN_文件名_10

 4. 初始化项目


客户端:

Mac :  Cornerstone(常用)、Versions、Xcode、Command Line

     

Command Line(命令行):

     

svn checkout 服务器地址 --username=xxx --password=xxx
         svn add  文件名
         svn commit  -m "注释"
         svn update
         svn resolve 文件名
         svn update -r版本号        // 还原到指定版本内容
         svn merge -r最新版本:回退版本 文件名
         svn revert  文件名
         svn remove 文件名
         svn log                        // 查看版本信息
        svn status

Cornerstone


一般情况下用Cornerstone进行项目初始化、忽略操作、打版本、分支、合并到主干操作,平常经常使用的更新、提交、冲突 使用Xcode中的Source Control 即可!


Cornerstone可以忽略xcuserdata文件,而Xcode不能忽略该文件


使用该工具应特别注意:一定要使用 Command + R 经常 刷新,因为Cornerstone不会主动刷新,会造成本地和Cornerstone上的文件内容不一致,不是最新的,在做版本备份和打分支的时候版本号也不是最新的,如果版本号不是最新的,会出现麻烦,因为版本都打错了


操作步骤:


1. 连接远程仓库


2. 检出trunk


3. 初始化项目并删除xcuserdata


4. 重新生成xcuserdata并进行忽略操作并提交


5. 其他同事开始开发




iOS版本管理工具SVN_服务器_11



Working copies:工作区     


Repositories:仓库




1. 连接服务器仓库


iOS版本管理工具SVN_文件名_12

iOS版本管理工具SVN_svn_13


2. 将远程仓库中的trunk代码检出到本地


iOS版本管理工具SVN_服务器_14




3. 在检出的目录下面创建工程,并提交




iOS版本管理工具SVN_svn_15


iOS版本管理工具SVN_服务器_16




4. 删除两个xcuserdata文件夹


iOS版本管理工具SVN_服务器_17


删除之后,要再update一下,然后再提交。




5.生成xcuserdata,并进行忽略操作


删除ViewController中内存警告方法,将目录结构折叠起来,并在viewDidLoad方法中加一个断点,这样查看Cornerstone poeject.xcworkspace目录下还会生成两个xcuserdata,并对其忽略操作! 然后先Update 再 Commit提交,然后修改一下ViewController中的viewDidLoad方法,使用Source Control -->Commit 当再一次修改源代码提交的时候就不会再有User Data 之类的文件了




iOS版本管理工具SVN_服务器_18




6. 再次提交时,发现已没有User Data文件夹了,可直接提交


iOS版本管理工具SVN_服务器_19





xcuserdata包含的内容


记录用户上次打开的文件,用于xcode下次打开时,直接打开该文件


记录目录打开的情况,以便xcode下次打开的时候还原上次的状态


记录用户打的断点信息




Project Settings: 该配置文件需要共享, 该文件包含文件目录位置




至此,初始化已完成,其他同事即可检出进行开发了,在之后的更新、提交、冲突等操作可以直接使用Xcode中的Source Control进行管理即可


在Xcode中使用SVN注意点:


1. Xcode中的SVN不识别 【静态库】 .a 文件(静态库包含实现代码,但不能被看到,保护核心源代码)必须使用命令行方式进行添加


svn add Xxx.a    然后Source Control ----> Commit 提交


2. Storyboard会被翻译成XML,一但Storyboard冲突,要想解决只能去修改晦涩的XML了,不忍直视!所以千万别让storyboard冲突,尽量只有一个人在操作Storyboard,但一般情况下app项目是按模块开发的,所以一般一个模块只有一个人在维护,这也减少了冲突的机会



SVN状态:


A:被添加到本地代码仓库


M:被修改


C:冲突


D :被删除


I: 被忽略




trunk: 主线开发


branches:为了修复tags中的bug,一般以fixbug作为后缀


tags:版本备份




1. 项目经过3个月的努力通过测试,完成了1.0版本,并已经上到App Store了;


2. 将trunk下的这份代码打成1.0版本放到tags下进行版本备份Xxx1.0


3. 开发人员接着开发第二个版本2.0


4. 在开发第二个版本的时候,用户反馈第一个版本有一个重大bug需要紧急修复,开发人员需要将1.0版本的代码做成一个分支并起名Xxx-fixbug


5. 接着开发人员checkout这个分支,并修复bug,并上传到app store, 并将该份代码进行1.1的版本备份 ,Xxx1.1


6. 接着需要将分支合并到主干中并提交,并删除分支中的项目


7. 开发人员接着开发2.0版本



多更新,多提交,不要每天只提交一次,做好一个小模块或小功能就可以考虑提交,尽可能的避免冲突