SVN的使用

来源:互联网 发布:帝国cms 7.2 编辑:程序博客网 时间:2024/04/28 10:26

SVN的使用命令行操作:

01.将服务器文件下载到本地

================================================================================


# 切换工作目录

$ cd 经理的工作目录

# checkout服务器上的代码仓库

$ svn co http://192.168.1.103/svn/weibo --username=manager --password=manager


提示:checkout(co)之后,命令行会记录用户名和密码,后续操作不用再另行指定


02.经理添加文件

================================================================================


* svn 常用命令

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

# 查看本地代码库状态

$ svn st

错误提示:"is not a working copy",必须在svn的工作目录下才能正确使用svn的命令

# 查看svn日志

$ svn log

# 查看某一个文件的日志

$ svn log filename

# 查看某一个文件某个版本的日志

$ svn log filename@1


* 创建文件

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

# 切换到工作目录

$ cd weibo

# 创建文件

$ touch main.c

# 打开并编写文件内容

$ open main.c


* 将文件提交到服务器

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

# 查看工作目录状态

$ svn st

# 将文件添加到本地版本库中

$ svn add main.c

# 将文件提交到服务器的版本库中

$ svn ci -m "添加了main.c文件"


"小结" -添加文件的两个步骤

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

1将新建的文件添加到本地代码库

$ svn add main.c

2将刚刚添加的文件提交到服务器

$ svn ci -m "备注信息"


注意:一定要养成写注释的良好习惯


03.团队成员加入

================================================================================


1张三

$ svn co http://10.0.1.15/svn/weibo --username=zhangsan --password=zhangsan

2李四

$ svn co http://10.0.1.15/svn/weibo --username=lisi --password=lisi


"小结"至此,一个项目的搭建工作就告一段落了

1>项目准备工作,通常由项目经理完成

2>程序员只需要把项目 co 到本地即可


提示:新入职一家公司后,别忘记让经理分配 svn 的账号和密码


04.张三添加文件

================================================================================


# 添加文件 Person.h Person.m

$ touch Person.h Person.m

# 修改 Person.h Person.m

$ open Person.h

$ open Person.m

# Person.h Person.m添加到本地代码库

$ svn add Person.*

# 将内容提交到服务器

$ svn ci -m "添加了Person"


05. 删除文件

================================================================================


# 删除文件

$ svn rm Person.h

# 提交删除

$ svn ci -m "删除了文件"


注意:不要使用文件管理器直接删除文件


06. 撤销修改

================================================================================

$ svn revert Person.m


07.恢复到之前的某个版本

$ svn update -r 5

================================================================================

$ svn up


08. 冲突解决

(p) postpone            对比

(mc) mine-conflict      使用我的

(tc) theirs-conflict    使用对方的


=================================================

svn st 显示的文件状态


1列状态说明:描述文件被添加、删除或其他修改

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

' ' 没有修改

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

'C' 冲突

'D' 被删除

'M' 被修改

'I' 被忽略

'R' 被替换

'U' 文件冲突

'X'外部定义创建的版本目录

'?'文件没有被添加到本地版本库内

'!'文件丢失或者不完整(不是通过svn命令删除的文件)

'~'受控文件被其他文件阻隔


========================================================

#pragma mark .源代码管理起源(了解)

1. SVNGit区别

SVN : 集中式源代码管理工具

Git : 分布式源代码管理工具




#pragma mark . SVN介绍(了解)

1.SVN的基本操作及使用场景

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

commit : 提交代码给服务器,至少下班前提交"可运行版本"

update : 更新服务器的最新代码,至少上班前更新一次



#pragma mark . SVN服务器搭建及配置(了解)

1.软件安装, 如果不懂看PPT

2.新建一个用户,再创建一个远程仓库. (远程仓库-->仓库名--> 标准目录结构-->用户权限, 默认不要改权限)

3. 获取IP : 开始菜单 -->运行 --> 输入cmd --> 输入ipconfig -->确保前三位号段跟Mac的前三位号段一致

4.如果号段不一致, 需要选中虚拟器,更改网络连接模式为"桥接模式"

5. Mac中就可以输入地址进行访问



#pragma mark .常见UNIX命令行的使用(掌握)

pwd : 获取当前的绝对路径

ls : 查看当前目录下的文件

cat : 在终端中查看文档内容


#pragma mark . SVN基本操作(掌握,难点)

. 模拟单人开发唐僧=经理

1. cd 到指定目录

2. checkout下载代码 : svn checkout http://192.168.12.98/svn/QQ --username=tangseng --password=tangseng

3. 需要cd QQ目录下(SVN所管理的目录)

4. 初始化项目 (拿一个文件当一个项目) :touch Car.h

5. 查看文件状态:svn status

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

7. 提交文件给远程服务器: svn commit -m "新增了Car.h" /-m参数一定不要忘, ""双引号内的内容一定要写,要写的有意义

8. 打开Car.h修改文件,再次查看状态, 最后commit一次

9. 更新代码: svn update


想实现多人开发只要按照上面命令执行即可. 多人开发,就是不断的更新/提交

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

10. 查看帮助: svn help

11. 查看日志: svn log

12. 删除文件: svn delete Car.h (不要右键垃圾桶, update就回来了)

13. 版本回退: svn revert Car.h (只要没有被提交给服务器,都可以还原)


. 文件状态解释

? : 文件在当前目录下,但是没有被本地版本库管理 --> 需要add

A : 文件在当前目录下,已经被本地版本库管理 --> 需要commit

M : 文件被修改了 -->需要commit

D : 文件被本地版本库删除了 -->需要提交

U : 文件之前就存在,目前被更新了

C : 文件发生了冲突


. 命令的简写

svn co : svn checkout

svn st : svn status

svn ci -m 修改了Car.h : svn commit -m"" 注释不要有空格

svn up : svn update


. 注意事项

1. isout of date :文件过期了, 其实根本原因是文件发生了冲突.需要更新一下

2.及时提交, 及时更新.规范使用一般是先更新, 在提交.先更新, 能偶直接检测出冲突.

3.及时提交也可以最大化避免冲突.

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

5.冲突大部分发生团队合作初期, 后期遇到的几率非常低

6.如果遇到了很多的冲突, 那么拷贝"<<<<<<<",并查找, 批量删除

7.如果文件已经是服务器的最新版本, 那么文件修改后还未提交, 此时更新不会覆盖修改的代码

8.新人进公司, 最好主动问下SVN地址,账号密码(公司使用SVN和还是Git)


#pragma mark .解决代码冲突(掌握,重点, 难点)

1.冲突: 不同的人,在同一个文件, 同一行写了不同的代码,那么就会冲突


2. 可能会发生冲突: appdelegate, MainViewController, 公用的代码/, SB/Xib


3.冲突出现的情况处理

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


(p) postpone : 推迟,程序员自己解决冲突合并问题

(mc) mine-conflict : 使用我的版本(来解决冲突),覆盖了服务器的代码 (代码发生了改变,需要commit)

(tc) theirs-conflict : 使用服务器的版本(他们的版本),丢弃了自己的代码 (没有对服务器代码造成任何影响)


(df) diff-full : 展示不同

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

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


4.使用p来解决冲突

<<<<<<< .mine ~ ======= : 自己写的代码

======= ~ >>>>>>> .r11 : 服务器的最新代码


<<<<<<< .mine

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

=======


@property (nonatomic, copy) NSString *apple; // 八戒增加了苹果

>>>>>>> .r11


解决步骤:

1. p

2.直接删除不认识的符号(< = >), 自己调整代码(调顺序/删除代码)

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

4.提交修改后的文件



#pragma mark .使用第三方图形化工具(掌握,重点)

http://192.168.12.98/svn/Weixin

1.小技巧: 拷贝网址,然后点击软件, 会自动填写到对应的位置

2. Mac10.10自带的SVN版本是1.7

3.一定要记得先添加远程仓库, 然后执行checkout,之后能需要什么命令, 点击软件界面即可

4. CornerStone来解决代码冲突

    1.直接删除不认识的符号(< = >),自己调整代码(调顺序/删除代码)

    2.点击软件底部的resolve按钮即可(选中冲突的文件)

    3.提交修改后的文件

5. 忽略文件的问题: UserInterfaceState.xcuserstate 当前打开了那个文件, 以及文件夹的折叠状态,或者xcuserdata文件夹.

6.如何忽略垃圾文件:

    第一步(已经被管理的文件),右键-->delete--> commit .此时文件只要稍作修改, 删除掉的文件又再出出来,变成?号文件

    第二步(已经是?号状态),右键-->ignore-->commit一下.

7. 如果不知道那些文件可以删除, 百度/github 搜索.gitignore进行参考



#pragma mark .使用Xcode集成SVN(掌握,重点)

1. xcode如何checkout ?有两种方式

    1. xcode欢迎界面,点击第三个选项checkout -->输入地址-->输入账号名和密码即可

    2. 点击xcode , 选择顶部的Source Control --> checkout


2.命令的快捷键

    1. commit  : com + opi + c

    2. update : com + opi + x


3. xcode可以满足大部分的操作需求,忽略文件这个操作xcode无法完成,建议配合第三方软件完成.


4. 如果想要还原代码, 选中文件,右键Source Control-->丢弃文件 / 选择顶部Source Control菜单,选择丢弃指定文件还是丢弃全部文件


5. Xcode解决代码冲突

    1.选择?,然后选择下方四个小按钮, 然后点击更新

    2.直接提交修改冲突完毕的代码


6.界面冲突(看一次就行了):右键SB/Xib-->查看源代码--> 朱行比对缺失的代码.

7.如何避免界面冲突: 分模块,沟通, "灵活运用丢弃文件修改"



#pragma mark . SVN目录结构(了解)

trunk: 开发的主干目录,一般都在此文件夹

branches: 分支目录,团队开发中一般用于修复bug或者开发新功能

tags: 备份重大版本, 譬如发布到AppStore的版本





SVNMac自带的工具,不需要下载,如果报了以下的错误, 那么应该去xcode偏好设置--> Locations -->选择command line tools.


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 usefor command line developer tools (or see `man code-select`)



===============================================



0 0
原创粉丝点击