svn简介
- 全称是Subversion,集中式版本控制之王者
- SVN 版本控制,需要自己搭建一个管理代码的服务器,提供开发人员,上传和下载
一般公司开发都是团队开发,版本控制成为了开发人员的必要手段,看下面的图可以让你对有个SVN简单大概的了解
当然你想使用SVN 不是下载软件就可以使用的,需要公司的后台开发人员配合,给前端创建代码仓库
要想利用SVN管理源代码,必须得有2套环境
服务器
用于存储客户端上传的源代码
可以在Windows上安装Visual SVN Server
大部分情况下,公司的开发人员不必亲自搭建SVN服务器
客户端
上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步
可以在Mac上使用命令行、Versions、Cornerstone、Xcode
开发人员就属于客户端这个角色
搭建服务器非常简单下载VisualSVN安装即可
SVN的基本使用
svn可以用命令行管理也可以用图形化界面管理(Conrnerston)
- SVN命令行管理:
①.将服务器所有的内容下载到本地
svn checkout 服务器地址 —username=mgr —password=mgr
②.进⼊入到工作目录
cd 工作目录
③.初始化项⺫
touch main.m 添加文件和项目
④.将main.m加⼊入到本地代码管理中
svn add main.m
⑤.将main.m提交到服务器
svn commit -m “注释”
⑥.查看⽂文件的状态(svn status—>简写svn st)
svn st 显示的文件状态
文件状态
' ' 没有修改
'A' 被添加到本地代码仓库
'C' 冲突
'D' 被删除
'I' 被忽略
'M' 被修改
'R' 被替换
'X' 外部定义创建的版本目录
'?' 文件没有被添加到本地版本库内
'!' 文件丢失或者不完整(不是通过svn命令删除的文件)
'~' 受控文件被其他文件阻隔
⑦.删除
删除服务器上的某个文件,需要做2个步骤
将文件从本地的版本控制库中移除:svn delete 、svn remove
提交刚才的删除操作到服务器:svn commit
将文件从本地的版本控制库中移除
svn delete 文件名
⑧.查看日志
查看日志,需要2个步骤
将服务器的最新代码更新到本地:svn update
查看日志:svn log
⑨.添加
提交一个新建的文件到服务器,需要2个步骤
添加新建的文件到本地的版本控制库中:svn add
提交刚才的添加操作到服务器:svn commit
如果直接提交一个没有添加到本地版本控制库中的文件,会报下面的错误
is not a working copy
⑩.更新
将服务器的最新代码更新到本地
svn update [PATH]
将文件恢复至某个版本
svn update -r 版本号 [PATH]
⑪.代码冲突问题:
a.无法提交代码提示错误:out of date
过期—>如果本地的版本号⼩小于服务器的版本号是 不能提交
先更新一下,在查看冲突 conflict discovered
b.代码冲突的解决⽅方案:
(p) postpone : 对⽐比所有的版本的代码,⼿手动解决冲突
(mc) mine-conflict : 使⽤用我的代码覆盖服务器的代码
(tc) theirs-conflict : 使⽤用服务器代码覆盖我的代码
(df) diff-full : 展⽰示全部的不同.是在命令⾏行中展⽰示
(e) edit : 直接编译⽂文件,但是也是在命令⾏行中编辑
(s) show all options: 再次展⽰示所有的选项
c.选择postpone查看⽂文件中的代码
在冲突的文件中有冲突展示<<<<<<< .mine我的代码=======服务器的代码>>>>>>> .r16
在代码中修改后保存文件
再删除多余的文件
d.解决冲突之后命名:svn resolved ⽂文件名
Xcode内置的SVN使用
使用场景
去到公司的第一天,下载公司的代码到电脑上
svn checkout
修改了某个早已存在的旧文件,然后提交到服务器
svn commit
提交一个自己新建的文件到服务器
svn add -> svn commit
删除一个早已存在的旧文件,然后同步到服务器上
svn delete -> svn commit
将其他同事提交的新代码更新到自己电脑上
svn update
不小心写错了很多东西,想撤销所写的东西(还未把修改提交到服务器)
svn revert
不小心删错了文件,想把文件恢复回来(还未把删除提交到服务器)
svn revert
不小心写错了很多东西,想撤销所写的东西(已经把修改提交到服务器)
svn update -r 版本号
不小心删错了文件,想把文件恢复回来(已经把删除提交到服务器)
svn update -r 版本号
目录规范
Trunk - > 目前正在开发的版本(一般都是在这个目录下进行开发的)
Tags - > 存放已上线重大把版本(备份)
Branches - > 当有以前的版本有重大bug 或者有一个新的功能需求时在这个目录下开发
开发过程中目录规范演示:
- 1.当你到公司刚开始开发1.0版本的项目时在是Trunk这个分支开发的
- 2.在1.0版本开发完成后,需要把1.0版本备份到Tags文件下一份
- 3.然后你在开始开发2.0版本,
- 4.在开发2.0版本的时候你的线上的1.0版本遇到了一些重大bug需要及时解决,这时候你就得把备份到Tags文件下的1.0版本项目拷贝到Branches文件夹内一份
- 5.然后开始在Branches中解决1.0版本中的重大bug,解决完毕bug后提交到服务器。发布
- 6.但是1.0版本中的bug在正在开发的2.0版本中也有,不可能再让人重新解决一遍,这时候可以把1.0版本修复过的merge到当前开发的2.0版本中
- 7.但是merge过程中会出现冲突,解决完冲突后点击Resolve,再提交在merge就可以了。
- 8.这时候正在开发中的2.0版本的项目也就解决了1.0版本中的重大bug