当前位置:网站首页>【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)
边栏推荐
- 串口實驗——簡單數據收發
- Synchronized underlying principle, volatile keyword analysis
- Interpretation of MySQL optimization principle
- Systick tick timer
- Un salaire annuel de 50 W Ali P8 vous montrera comment passer du test
- Count the number of words in the string c language
- OpenGL frame buffer
- How to pass the PMP Exam in a short time?
- External interrupt to realize key experiment
- Simulation volume leetcode [general] 1557 The minimum number of points that can reach all points
猜你喜欢
STM32 clock system
MySQL master-slave delay solution
数据在内存中的存储
Troublesome problem of image resizing when using typora to edit markdown to upload CSDN
Ppt template and material download website (pure dry goods, recommended Collection)
The essence of high availability
Expérience de port série - simple réception et réception de données
Locust performance test 5 (analysis)
2022-06-30 Unity核心8——模型导入
H3C vxlan configuration
随机推荐
Several methods of calculating the average value of two numbers
PMP Exam details after the release of the new exam outline
Port multiplexing and re imaging
Unity Shader入门精要初级篇(一)-- 基础光照笔记
Several stages of PMP preparation study
Skill review of test engineer before interview
2021 year end summary
C language for calculating the product of two matrices
C语言指针(上篇)
Implement custom memory allocator
Test Engineer Interview Questions 2022
2022-07-06 Unity核心9——3D动画
Systick滴答定时器
What are the suggestions for PMP candidates?
systemd
C语言指针(中篇)
RuntimeError: Calculated padded input size per channel: (1 x 1). Kernel size: (5 x 5). Kernel size c
How does the project manager write the weekly summary and weekly plan?
Common short chain design methods
Locust performance test 4 (custom load Policy)