iOS版本管理工具SVN

1.版本管理工具包括

        CVS(已过时)

        SVN(常用)

        GIT(高大上) (GitHub, OSChina)

2.实际使用步骤:

    1. 安装SVN服务器

    2. 创建仓库

    3. 创建用户

    4. 为仓库添加用户

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

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

    7. 李四新人加入,新人需要 源代码,需求文档,接口文档,效果图, 源代码一般先分配只读权限,熟悉代码之后再分配Write权限


3.SVN服务器安装:

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

 1. 安装SVN 服务器

 iOS版本管理工具SVN_第1张图片 iOS版本管理工具SVN_第2张图片                    

iOS版本管理工具SVN_第3张图片

iOS版本管理工具SVN_第4张图片

iOS版本管理工具SVN_第5张图片


2.创建仓库

iOS版本管理工具SVN_第6张图片

iOS版本管理工具SVN_第7张图片

iOS版本管理工具SVN_第8张图片                                    

3. 创建用户

 iOS版本管理工具SVN_第9张图片                      

 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_第13张图片

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

iOS版本管理工具SVN_第14张图片

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


iOS版本管理工具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版本

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


你可能感兴趣的:(iOS)