搭建服务器
- 我们一般会在公司的内部搭建服务器,就是本地数据,如果要访问就可以再本机上访问本地服务器
- 这里我们搭建 Visual SVN Server 服务器
- Visual SVN Server下载地址
http://www.visualsvn.com/server/download/
- Visual SVN Server下载地址
-
搭建过程可以参考搭建步骤
SVN客户端命令
客户端命令1
- svn checkout :下载服务器的代码到本地 (简写svn co)
- svn commit :将改动的文件提交到服务器(简写svn ci)
- svn update :更新服务器的代码到本地 (简写svn up)
- svn add :向本地的版本控制库中添加新文件
- svn delete、svn remove :从本地的版本控制库中删除文件(简写svn del、svn rm)
- svn move :移动文件或者目录或文件更名
- svn mkdir :创建纳入版本控制下的新目录
- svn revert :撤销之前的一切修改
- svn merge :将两个版本之间的差异合并到当前文件
- svn resolved + 需要解决冲突的文件: 文件冲突解觉完成后需要执行这句代码
客户端命令2
- svn info :查看文件的详细信息
- svn diff :查看不同版本的区别
- svn log :查看日志信息
- svn list :列出版本库下的文件和目录列表
- svn status :查看文件状态(简写svn st)
- svn help :获取帮助信息(比如svn help ci)
- svn lock :加锁
- svn unlock :解锁
使用方法
-
- 将项目文件下载至本地
- svn checkout URL [PATH]
- svn co URL [PATH]
注意:这里的中括号[ ]代表可选(可以省略)
示例:再终端中操作
示例
// 再终端中操作下载服务器端的文件
svn checkout https://192.168.1.106/svn/Weibo/ /Users/Documents/workspace
192.168.1.106代表的是:代码仓库的远程地址
/Users/Documents/workspace代表的是:将代码下载到本地的哪个路径
如果省略/Users/Documents/workspace的路径,就下载到命令行当前所在的路径
- 2.提交修改或创建的文件
- 提交一个新建的文件到服务器要经过两个步骤
- 1 添加新建的文件到本地的版本控制库中:svn add + 哪个文件
- 2 提交刚才的添加操作到服务器:svn commit -m "注释" [PATH]
- 示例
svn commit -m “修改了User.m文件” /Users/Desktop/workspace/Weibo/branches/User.m
/Users/Desktop/workspace/Weibo/branches/User.m代表的是:提交哪个文件到服务器
如果省略/Users/Desktop/workspace/Weibo/branches/User.m的路径,就将命令行所在路径中所有改动过的文件提交到服务器
- 注意点
- 如果直接提交一个没有添加到本地版本控制库中的文件,会报下面的错误
is not a working copy - svn这个隐藏目录记录着非常关键的信息
千万不要手工修改或删除这个 .svn隐藏目录和里面的文件! 否则将会导致本地的工作副本被破坏,无法再进行操作
- 如果直接提交一个没有添加到本地版本控制库中的文件,会报下面的错误
SVN status 显示的文件状态
- 追加
- ? : svn不识别该⽂文件,或者该⽂文件被删除过,或者该⽂文件是新添加的⽂文件,还没有被 本地代码仓库进⾏行管理
- A : ⽂文件已经被添加到本地仓库管理中,但是还未添加到服务器中(服务器的仓库还未 管理该⽂文件)
- M : ⽂文件已经被管理,并且服务器也有该⽂文件.新修改的⽂文件,修改的内容没有被提到 服务器
- D : 该⽂文件已经在本地进⾏行了删除,但是还没有将删除操作共享给服务器
总结
- 1.再公司中我们需要先下载服务器中的源码使用
svn checkout + 服务器地址和文件地址
- 2.下载完文件,我们可以对文件进行编辑
- 3.如果上传的是一个新的文件,那就必须进行两次操作
- 1.将文件传到本地服务器控制库中
svn add + 需要添加的文件
- 2.将文件添加到本地的服务器中
svn commit -m + "注释"
- 如果上传的是有相同名称的文件就不用再将文件传到本地的服务器中,直接将文件添加到本地的服务器中就可以了
- 4.如果多个人管理同一个文件,每次使用的时候最好先更行下
svn update // 更新为最新的代码
代码冲突
- 每个公司都不会只有一个人在开发程序,这就避免不了代码再使用的过程中出现冲突.
- 遇到冲突的时候我们就要来解决冲突
- 例如:
- 张三和李四再出现代码冲突,张三需要一个属性,他添加一个属性以后更新到服务器,但是李四再使用的过程中,不知道服务器端已经更新了新的代码,但是李四还是在使用旧的文件,李四使用后更新版本就会出现版本过期的情况
- 解决办法:
- 什么情况下不能提交代码:当本地的版本号⼩小于服务器的版本号时代码是不能提
交
Conflict : 冲突 - (p) postpone : 选择p对应的文件中就会出现这种情况
- 我们需要删除不需要的代码
- 再终端中对当前代码进行消除冲突,终端中使用代码 svn resolved + 需要消除冲突的文件
- 对当前代码重新提交到服务器中
<<<<<<< .mine
表⽰示该位置是我的代码
=======
服务器的代码
>>>>>>> .r11
- (mc) mine-conflict :当发⽣生代码冲突的时候,使⽤用我的代码。覆盖服务器代 码
- (tc) theirs-conflict :当发⽣生代码冲突的时候,使⽤用服务器的代码。覆盖本地代码
版本回退
- 再处理文件过程中,有可能出现文件提交错误的信息那么我们就应该将文件推到以前的版本中.回退版本有两种办法
- 回退方式一
// 直接输入代码会退到以前的版本
svn update -r 6 // 会退到第六个版本
// 将文件提交到服务器中
svn commit + 文件名称
// 这时候可能会起冲突,选择使用谁的文件,那么我们就选择使用我的文件来覆盖服务器的文件
// 如果不起冲突,那么我们就应该添加一个属性,再提交到服务器中,然后再更新下
svn update
// 就可以会退到那个版本了
- 回退方式二
// 我们先回退到想要回退的版本
svn update -r 6
// 再更新到现在的版本
svn update
// 会退到想要回退的banben
svn merge -r 13(当前版本):6(想要回退的版本) 文件名
SVN 目录结构
- 自动创建的文件目录总共有三个文件夹
trunk 文件夹
1.这个文件夹主要是用来存放正在开发的项目
2.我们需要再cormerstone中创建新的文件项目,并且checkout到当前文件夹中
- 创建的文件会自动添加到服务器中
tages 文件夹
- tages文件夹主要是用来存放已经上线的一些项目
branche 文件夹
- 这个文件夹主要是用来修复一些上线项目的bug.
- 项目修复完成后会将这个修复项目checkout下来,切记一定要选中这个文件进行checkout,否则会出现大问题
- 修复完成后我们需熬将修复的文件版本和正在更新的版本进行合并