文章目录
SVN是什么?
SVN就是一个开源的版本控制系统。
SVN subversion
存放随着时间改变的数据。
数据放在中央资源管理库中(Repoitory)中—类似一个文件服务器,会记住每一次文件的变动。
代码版本管理工具
它能记住每次的修改
查看所有的修改记录
恢复以及删除的文件
简单概念
- repository 源代码库
- Checkout 提取
- Commit 提交
- Update 更新
开发流程:Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了) 。
当两个程序员修改同一文件时/同一行时?
SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN 会提示文件 Conflict, 冲突,需要手动确认。
SVN和Git区别:
使用简单,上手快
目录权限控制,企业安全必备
子目录CheckOut检出,减少不必要的文件检出
CVS和SVN区别:
CVS 计算机并行版本系统(Concurrent Version System):只能跟踪单个文件历史
SVN 版本控制工具 (Subversion):依据时间跟踪目录变动,目录和文件都能进行版本控制。
SVN比起CVS优点:
-
原子提交
一次提交不管单个还是多个文件,都是作为一个整体提交的。
如果中途发生意外/传输中断,不会引起数据库不完整和数据损坏。
-
重命名、复制、删除文件等动作都保存在版本历史记录当中。
-
对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)
-
目录也有版本历史。
整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。
-
分支的开销非常小。
-
优化过的数据库访问,使得一些操作不必访问数据库就可以做到。
这样减少了很多不必要的和数据库主机之间的网络流量。
SVN的主要功能:
-
目录和文件版本控制
-
真实的版本历史
在Subversion中,你可以增加(add)、删除(delete)、复制(copy)和重命名(rename)
-
自动提交
-
纳入版本控管的元数据
-
选择不同的网络层
-
一致的数据处理方式
-
有效的分支(branch)与标签(tag)
-
Hackability
SVN主要应用:
- 开发人员用来做代码管理
- 用来存储一些重要的文件,比如合同
- 公司内部文件共享,并且能按目录划分权限
SVN基本操作
-
提交和更新
检出 CheckOut
新增 Add
提交 Commit
更新 Update
历史记录
-
撤销和修改
- 撤销本地的修改
- 撤销已经提交内容
- 恢复到指定版本
-
添加忽略
怎么忽略文件,有些文件不想提交,就可以添加忽略
-
解决冲突
-
什么情况下容易发生冲突?
多个人修改了两个文件的同一行
无法进行合并的二进制文件
-
怎么避免冲突?
经常更新同步一下他人的代码
二进制文件不要多人同时操作
-
冲突了怎么办?
手动解决修改冲突, 或者直接使用对方的
-
-
分支
什么时候需要开分支?
隔离线上版本和开发版本
大功能开发,不想影响到其他人,自己独立开发分支去开发
-
暂存
暂存有什么用?
情况一:代码改了很多,但是突然需要紧急修改一个Bug,但是代码灭有写完,不能提交。
情形二:代码重写很多,突然需要发布新版本,但是代码还跑不起来,不能提交。
这种情况下就可以先把代码暂存起来,
-
复杂代码合并
情况:
主干开发新功能,改变了很多
分支是线上版本,修改了很多bug
两个分支的代码时间久了差异很大,无法直接分支合并或者指定修改记录合并
使用BeyondCompare工具对比合并
SVN目录结构:
svn分支
-
svn经典目录结构:
trunk 树干
branches 分支
tags 标签
Repositories 仓库:存放被svn管理的项目文件,可以存放源码,文档等;
Users 用户:创建和编辑用户;
Groups 权限组:创建和编辑用户组;
SVN工作流程和架构图
SVN工作方式:
SVN架构图:
操作SVN服务器的两种方式:
-
command-line 命令行方式;
-
GUI-client 图形界面方式;
-
svn服务连接方式:
(1) internet网络连接:
apache服务器;
svn服务器;
(2) local 本地连接:
-
svn数据存储方式:
文件方式:FSFS(推荐使用)
数据库方式:BerkeleyDB(伯克利DB)
-
svn分支如何同步主干代码?:https://blog.youkuaiyun.com/MS_SONG/article/details/126833658