GeniusWarrior
雨停了,天晴了,感觉自己又行了

 

SVN : 集中式版本管理工具

checkout: 下载代码, 只需要做一次

update : 更新代码

commit :提交代码

 

三. SVN服务器搭建及配置(了解)

一. 端口号

http 80 一般是http, 因为SVN一般都是公司内部才能访问

https 443

 

二. 每次对服务器端做操作, 版本号都会提升

 

三. 安装

1. 参加一个仓库, 并配置用户

2. 应该(虚拟机注意是桥接模式, 网络是自动获取ip), 获取ip地址 (运行 --> cmd --> ipconfig --> 获取192.168.xx的地址)

3. 在Ma从浏览器中更换svn的地址, 进行访问

 

 四. 常见UNIX命令行的使用(掌握)

pwd : 查看当前目录

cat : 在命令行中查看文件

 

 五. SVN基本操作(掌握)

 

一. 模拟多人开发

 

 一> .唐僧创建项目

1. cd 到指定文件夹下

2. 下载代码(指定一个目录跟服务器保持连接) :  svn checkout http://192.168.23.112/svn/QQ --username=tangseng --password=tangseng

3. 再次cd 到SVN管理目录下, 千万不要忘记

4. 创建项目 : touch Car.h (拿一个文件模拟一个项目)

5. 查看状态: svn status   status是将本地的代码和服务器做对比, 不一样的才会显示出来

6. 添加文件的管理权: svn add Car.h

7. 提交本地文件给服务器: svn commit -m "初始化了项目, 添加了Car.h文件"   -m 一定要写, 以后查看版本时, 是通过注释来区分的. / ""可以不写, 是为了英文好区分注释

8. 更新代码 : svn update

---------------------------------

9. 删除文件: 不能直接删除, 否则up就回来 : svn delete 如来.h , 还需要提交

10. 恢复文件为最初的状态: (本地被修改, 但是没有提交服务器 / 文件被本地版本库删除了, 但是没有提交到服务器) : svn revert 如来.h

11. 查看帮助: svn help ,会调出所有的命令

12. 查看日志 : svn log , 查看之前的版本记录(备注一定要写, 而且要写的有意义)

13. 版本穿梭: svn update -r 10 回到第10个版本 , 可以查看之前的代码, 然后想回到最新的代码, 只要up一次, 即可

14. 告诉本地版本库解决了冲突 : svn resolved Car.h

 

二> 悟空加入开发(老手)

1. cd 到指定文件夹下

2. 下载代码(指定一个目录跟服务器保持连接) :  svn checkout http://192.168.23.112/svn/QQ --username=tangseng --password=tangseng

3. 再次cd 到SVN管理目录下, 千万不要忘记

4. 正常开发, 该更新就更新, 该提交就提交

 

三> 八戒加入开发(新手)

1. cd 到指定文件夹下

2. 下载代码(指定一个目录跟服务器保持连接) :  svn checkout http://192.168.23.112/svn/QQ --username=bajie --password=bajie

3. 再次cd 到SVN管理目录下, 千万不要忘记

4. 正常开发, 该更新就更新, 该提交就提交

 

团队开发, 就是, 写完提交, 别人更新

 

二. 常见命令的简写

checkout : svn co

status : svn st

commit : svn ci

update : svn up

 

三. 常见状态解释

? : 文件在SVN管理的目录下, 但是没有被SVN所管理. 看见? , 记得add

A : 文件在SVN管理的目录下, 并且, 已经被本地SVN版本库管理, 看见A, 记得commit

D : 文件在本地删除, 还需要提交

M : 文件在本地被修改过, 需要提交

G : 文件曾经发生过冲突, 然后被解决了

U : 文件被更新

C : 文件发生了冲突

 

 

四. 常见报错:

1. is not a working copy : 说明没有进入到SVN管理的目录. 就进行了SVN的命令. 应该进入到正确目录

 

2. xcrun: error: active developer path ("/Applications/Xcode 2.app/Contents/Developer") does not exist, use `xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools (or see `man xcode-select`)

解决方案: 当多个Xcode版本同时存在, 可能工具就混乱了. 需要选择一下. 找Xcode --> 偏好设置 --> Locations --> command line 选择一下即可

 

3.  is out of date : 文件过期 . 如果发生了冲突, 那么直接提交时, 会报此错误. 应该update.

 

五. 注意事项

1. 先更新, 再提交. (不会覆盖掉刚刚写的代码, 因为修改的文件版本高于服务器版本, 不会被覆盖.) 可以检测到冲突, 这只是一个操作规范.

2. 每一个文件都有单独的版本号, 24 - 25

3. 及时提交, 没做完一个小板块, 或者一个小功能就提交. 避免冲突

4. 如何避免冲突:  分模块, 沟通 .

 

 

六. 解决代码冲突

1. 代码冲突: 同一个文件, 同一行, 两个不同的人修改并提交. 就会发生冲突

 

2. 更新时, 如果发生冲突时会报以下错误

Conflict discovered in '/Users/apple/Desktop/SVN演练/八戒/Weixin/Car.h'.

//常用

(p) postpone : 延迟处理(svn工具不会帮你做解决冲突的事情, 自己手动解决) (版本会发生改变, 所以解决完冲突需要提交)

(mc) mine-conflict : 使用我的代码, 覆盖服务器的代码 . 还需要提交一次 (版本会发生改变, 所以需要提交)

(tc) theirs-conflict : 使用服务器的代码(他们的), 丢弃我的代码 (版本不会发生改变)

 

//不常用

(s) show all options : 展示所有的选项

(df) diff-full : 展示所有不同

(e) edit : 编辑, 在命令行中编辑

 

3. 发生冲突的文件会发生改变

<<<<<<< .mine ~  ======= 我的代码

======= ~ >>>>>>> .r24  服务器的代码

 

<<<<<<< .mine

@property (nonatomic, strong) NSString *banana3; // 悟空增加了香蕉3=======

@property (nonatomic, strong) NSString *xiaomi; // 八戒增加了小米>>>>>>> .r24

 

4. 解决冲突的方案:

    1. (建议)选p, 延迟解决

    2. 删除不认识的代码(<< == >> ), 然后自己合并代码

    3. 告诉本地版本库, 自己已经解决了冲突: svn resolved Car.h

    4. 需要提交代码 (其它人更新即可)

 

七. 使用第三方图形化工具

http://192.168.23.112/svn/Weibo/trunk

1. 小提示: 使用Cornerstone时, 拷贝svn网址, Cornerstone会自动将地址填入界面内.

2. 使用Cornerstone, 应该先连接远程仓库(左下角), 然后点击checkout下载代码.

注意: checkout选择目录时, 应将底部svn版本选择为1.7. 因为mac默认就是1.7版本. 如果版本过低, xcode会提示升级, 然后Cornerstone重启一次即可

 

 

3. 忽略文件:

    1. .xcuserstate 不要提交给服务器. 此文件记录了用户当前展示的文件, 及目录展开结构

    2. (非项目文件)data后缀的(还包括用户断点) 都可以忽略不提交

    3. 通过工具, 先delete, 在commit, 再次编辑时就会出现, 最后选择ignore

 

八. 使用Xcode集成SVN

1. checkout : 三种方式

    1. xcode欢迎界面, 选择第三个选项, 即可checkout

    2. 选中xcode, 找偏好设置, 找账户, 左下角添加远程仓库

    3.  选中xcode, 找顶部的source control菜单, 选择checkout (最简单)

 

2. 常用快捷键

    1. update : com + opt + x

    2. commit : com + opt + c

 

3. xcode解决代码冲突

    只要更新, 一旦冲突, 就会有个界面提示选择. 应该选择下方的四个小按钮, update, 最后commmit就可以了. (没有提示resolved)

 

4. 如果将来写代码, 发现文件改的不像样子, 可以直接丢弃修改

 

5. SB / Xib 发生冲突的解决方案: 需要右键查看源码, 然后自己比对丢失的代码.  团队开发中, 尽量避免界面发生冲突 (如果不小心移动了界面, 那么可以丢弃修改)

 九. SVN目录结构

trunk : 开发主目录

branch : 分支, 一般用于修复bug或者开发新功能. 

tags : 备份重大版本(一般可以备份上架AppStore的版本)

 

posted on 2016-04-26 23:15  GeniusWarrior  阅读(345)  评论(0编辑  收藏  举报