基本操作
svn checkout:将服务器代码完整的下载到本地
svn commit:将本地修改的内容,提交到服务器
svn update:将服务器最新的代码下载到本地
check只需要做一次
提醒:
每天下班前 commit “可运行版本”
每天上班前 update前一天所有代码
使用环境
- 想要利用SVN管理源代码,必须得有2套环境
服务器
用于存储客户端上传的源代码
可以在Windows上安装Visual SVN Server
大部分情况下,公司的开发人员不必亲自搭建SVN服务器
客户端
上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步
可以在Mac上使用命令行 Versions,Cornerstone,Xcode
文件状态各种符号说明
- ‘’ 没有修改
- ‘A’ 被添加到本地代码仓库
- ‘C’ 冲突
- ‘D’ 被删除
- ‘I’ 被忽略
- ‘M’ 被修改
- ‘R’ 被替换
- ‘X’ 外部定义创建的版本目录
- ‘?’ 文件没有被添加到本地库内,不再SVN的管理之下
- ‘!’ 文件丢失或者不完整(不识别该文件)
- ‘~’ 受控文件被其他文件阻隔
- ‘U’ 更新最新的代码到本地(本地有文件的情况下)
- ‘G’ 产生冲突后,更新操作去解决冲突,相当于进行合并
一、命令行演示
1.项目经理将服务器的已有的内容下载到本地
- svn checkout 服务器地址 --username=… --password=…
2.项目经理初始化项目
- touch main.m : 创建main.m
- svn add main.m : 将main.m添加到svn的管理之下
- svn commit -m “初始化项目” main.m : 将main.m上传到服务器(main.m是一个文件名,如果不写文件名就会将本地svn所有没有上传的文件全部上传至服务器)(-m “初始化项目”,这是一个注释)
3.查看文件状态(查看文件是否在SVN的管理之下,或者是否进行了修改而没有提交)
- svn status
4.张三加入开发
1 > 将服务器所有的内容下载到本地
- svn checkout 服务器地址 --suername=zs --password=zs
2 > 开始开发
- touch person.h person.m : 创建person类
- svn commit -m “创建了person类”
3 > 经理更新代码
- svn update:更新服务器最新的代码(如果改文件在本地不存在则下载,如果本地存在则更新)
5.命令行的简写
- svn checkout -> svn co 将文件从服务器下载到本地
- svn status -> svn st 查看文件状态
- svn commit -> svn ci 将本地文件上传到服务器
- svn update -> svn up 更新代码
6.版本回退
- svn revert person.h : 将本地新增的内容(没有提交到服务器),删除
- svn update -r6 : 先回退到某个版本,观察下该版本是否是想要的那个版本
- svn update : 更新到最新的版本
- svn merge -r7:6 person.h
注意:如果本地版本号低于服务器的版本号,那么不能提交
7.删除文件
- svn remove(rm) person.m
8.查看版本信息
- svn update : 更新服务器最新的内容
- svn log : 查看版本信息
9.公司常用的命令
- svn update: : 更新
- svn commit -m “注释” : 将本地的代码提交到服务器
二、李四加入开发(进入公司)
1 > 需要向项目经理要一些东西
- 服务器地址,以及账号和密码
- 需求文档:有什么需求,做什么样的功能
- 接口文档:详细的记录服务器所有的接口
- 效果图:界面到底长成什么样子
2 > 将服务器已有的内容下载到本地
- svn checkout 服务器地址 账号和密码
- touch dog.h dog.m:创建dog类
- svn add * : 将不在svn管理之下的所有文件添加到svn的管理之下
- svn commit -m “添加dog类”
3 > 代码冲突
- out of date :本地版本号低于服务器的版本
- df:在命令行中展示所有的不同
- e:在命令行中来编辑冲突
- mc : 用我的本地的代码来覆盖服务器的代码
- tc : 用服务器的代码来覆盖我的代码
- p : 延迟解决冲突,展示所有冲突的文件,手动解决冲突 -> svn resolved person.h(person.h是出现冲突的文件)
注意:
1 > 尽量在修改文件之前先update
2 > 如果修改公共文件最好跟同事说一声,让他先别修改,修改完之后让他更新
三、图形化界面工具
1. 项目经理初始化项目
1 > 项目经理将服务器已有的内容下载到本地
记住format的选择 ->1.7
2 > 需要忽略的文件
- xcode会默认记录之前停留文件,下次打开依然停留在该文件,这个不需要共享
- xcode会默认记录之前目录的打开情况,同时不需要共享
- 断点信息,不需要共享
- xcuserdata
2. 在Xcode中使用svn的注意点
1 > 如果使用到静态库需要特别注意,必须使用命令行将静态库(.a文件)添加到svn的管理之下
- 先来到静态库的文件夹,和.a文件同一个目录,之后利用终端(svn add libRegex.a)libRegex.a是静态库的文件名称
2 > 如果使用到了storyboard也需要特别注意
- 如果能使用xib,尽量使用xib
- 如果在项目当中使用到了storyboard,尽量保证只有一个人在操作storyboard
3 > checkout的方式
- 使用命令行
- 使用cornerstone(图形化界面工具)
- Xcode
4 > 公司开发技巧(避免冲突)
- 尽量写一些代码就提交到服务器,时时跟服务器的代码保持同步
- 尽量提前半小时提交代码
目录规范
正规项目的SVN目录结构一般有3个文件夹
- trunk:主干,当前开发项目的主目录
- branches:分支目录,添加非主线功能时使用,开发测试之后,可以合并到主干项目中
- tags:标记目录,通常作为重大版本的备份