当前位置:网站首页>【SVN】SVN是什么?怎么使用?
【SVN】SVN是什么?怎么使用?
2022-07-07 06:28:00 【宋丹敏】
文章目录
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)
边栏推荐
- Confitest of fixture py
- 使用Typora编辑markdown上传CSDN时图片大小调整麻烦问题
- How to count the number of project code lines
- PPT模板、素材下载网站(纯干货,建议收藏)
- Count the number of words C language
- Esp32-ulp coprocessor low power mode RTC GPIO interrupt wake up
- 5A summary: seven stages of PMP learning
- [istio introduction, architecture, components]
- 硬件大熊原创合集(2022/05更新)
- Register address name mapping
猜你喜欢
MySQL master-slave delay solution
【istio简介、架构、组件】
JVM garbage collection detailed learning notes (II)
How to pass the PMP Exam in a short time?
Do you have any certificates with high gold content?
The essence of high availability
Skill review of test engineer before interview
C language pointer (Part 2)
【Istio Network CRD VirtualService、Envoyfilter】
C language pointer (Part 2)
随机推荐
C语言指针(中篇)
Implementation of corner badge of Youmeng message push
What is the rating of Huishang futures company? Is it safe to open an account? I want to open an account, OK?
面板显示技术:LCD与OLED
Common operating commands of Linux
MySQL master-slave delay solution
C language pointer (Part 2)
What are the suggestions for PMP candidates?
Simulation volume leetcode [general] 1567 Length of the longest subarray whose product is a positive number
JVM garbage collection detailed learning notes (II)
How long does the PMP usually need to prepare for the exam in advance?
Druid monitoring - Introduction to JMX usage and principle
模拟卷Leetcode【普通】1706. 球会落何处
go mod module declares its path as: gtihub. com/xxx-xx but was required as:xx-xx
LeetCode 715. Range module
硬件大熊原创合集(2022/06更新)
Unity shader beginner's Essentials (I) -- basic lighting notes
PMP Exam details after the release of the new exam outline
H3C VXLAN配置
RuntimeError: Calculated padded input size per channel: (1 x 1). Kernel size: (5 x 5). Kernel size c