目录
一、SVN是什么?
SVN(subversion) 是一款用于多人共同开发同一个项目的版本控制工具,是Apache软件基金会组织下的一个项目。
二、SVN有什么作用?
通常软件开发由多人协作开发,如果对代码文件、配置文件、文档等没有进行版本控制,将会出现很多问题。
2.1备份
小小负责的模块就要完成了,电脑突然蓝屏,硬盘光荣牺牲,这么多天的努力付诸东流。
2.2还原代码
项目需要完成一个很复杂的功能,大大摸索了一周终于有些眉目,可是代码已经被改得面目全非了,再也回不到过去的版本了。
2.3多人协同修改
小小和大大分别从服务器拉了同一个文件,先后对文件进行了修改并上传到服务器,可此时服务器并不能同时记录小小和大大的操作。
2.4追溯问题
程序员提交代码后线上直接崩了,svn可以根据代码的编写人和编写时间轻松追溯问题。
2.5权限控制
svn可以根据不同项目,设置相关人员只能访问对应的项目,否则很难保证钻石王老五会不会跑去别的项目乱搞一波。
-----针对上述问题,svn可以很好的解决,这也是众多公司选择它的原因。
三、下载安装
一般去到新公司,公司都是部署好服务端了的,我们只需要安装svn客户端,向开发要链接、账号密码直接访问即可;现在我们是自己学习使用,所以还是自行搭建服务端和客户端,方便我们练习操作。
3.1客户端下载
下载地址:https://tortoisesvn.net/downloads.html
打开链接,选择下载适合自己的安装包
3.2服务端下载
下载地址:https://www.visualsvn.com/server/download/
打开链接,选择下载合适自己的安装包
下载好,我们就进入安装流程了
3.3客户端安装
双击安装包,然后一路按照下述图片步骤进行即可
win+R快捷键,进入cmd验证是否安装成功
输入svn --version回车,如图所示,即为安装成功
3.4服务端安装
双击安装包,然后一路按照下述图片步骤进行即可
后续可以通过win键-找到svn服务端打开
到这里svn客户端和服务端都安装好了,所谓知己知彼,百战不殆,现在先来了解一下它的一些基本功能和概念吧。
四、基本功能&概念
repository:源代码库,源代码统一存放的地方;
checkout:检出,当手上没有源代码的时候,需要从源代码库检出一份;
commit:提交,当修改了本地代码,需要提交到源代码库;
update:更新,当检出了源代码后,执行update操作,本地的代码就可以更新为与源代码库的一致;
目录版本控制:svn实作了一个“虚拟”的版本控管文件系统,能够依据时间跟踪整个目录的变动,目录和文件都能进行版本控制;
真实的版本历史:在svn中,可以对目录和文件进行增加、复制、删除、重命名的操作,所有新加的文件都是从一个新的、干净的版本开始;
自动提交:svn的提交动作是不完全更新,允许开发人员以逻辑区间建立并提交变动,以防止部分提交成功时出现问题;
纳入版本管控的元数据:每个文件和目录都附有一组属性关键字,并且和属性值关联,可以创建存储任何key/value对;
选择不同的网络层:svn服务器使用的是自定义的通信协议,可以通过ssh以tunnel方式使用;
一致的数据处理方式:svn使用二进制差异算法来表示文件的差异,它对文字和二进制文件都一视同仁,以压缩的形式存储这两类文件,而且文件差异是以两个方向在网络上传输的;
有效的分支和标签:svn建立分支和标签的方法,就只是复制该项目,操作简单且耗时小。
五、操作使用
5.1创建版本库
简单理解,就是创建一个存放文件的仓库。
5.2创建用户
创建用户后,使用这个用户身份才能访问我们的服务端。
5.3浏览版本库
这个操作就是打开这个库,查看里面有什么,存了哪些文件。
5.4检出
检出就是从服务端拉一份最新的文件到本地,执行本地操作后,服务端和本地的文件是同步的。
.svn的文件夹不要动,它代表的是本地与服务端的连接,如果删除了,本地将无法连接服务端。
5.5提交
就是把我们本地的文件上传到服务器。
再浏览一下版本库,看看我们的提交是否已成功
5.6更新
更新就是把服务器的文件更新到我们本地,更新完成之后,本地的文件和服务器的文件才是同步的。这里要注意的是,每次提交前必须先更新,否则容易引起冲突。
5.7解决冲突
冲突出现场景复现:
1.用户1检出项目
2.用户2检出项目
3.用户1修改文件并提交
4.用户2修改文件并提交
5.发生异常
解决办法:用户2手动合并文件,再上传。
打开文件,保留用户1和用户2提交的内容,其他删除,保存后再次提交
5.8查看历史记录
查看文件的历史版本,可以看到版本号、修改人、修改时间等信息。
5.9比较不同
六、分支
分支概念:分支是为了将修改记录的整体流程分叉保存,分叉后的分支不受其他分支的影响;在软件开发过程中,通常有以下分支:Features、Develop、Release、Master、Hotfix。
Features:其实Features不是一个分支,而是一个分支文件夹,里面包含了每个程序员开发的功能点,开发完成后会合并到Develop分支。
Develop:开发分支,更新和变更最频繁的分支,正常情况下,程序员都是在这个分支进行开发的。
Release:预发布分支,一般来说,一个版本的功能全部开发完成且基本通过测试后,会合并到预发分支。
Master:主分支,稳定的版本分支,正式发布的版本都是从这个分支拉取的。
Hotfix:热更新分支,这个分支的存在是已经正式上线的版本中,发现了重大bug进而进行修复的分支。
6.1创建分支
在主分支的基础上,创建一个开发分支出来,后续在开发分支进行修改;其实就相当于把主分支的东西copy一份出来。即:主分支就是基础版本,开发分支是在基础版本下开发一个新产品。
步骤:选中要创建的分支文件-右键,然后按如下步骤
这个时候本地还是没有更新的,需要更新一次(右键-更新),本地才会出现我们刚才创建的分支。
6.2分支切换
6.3合并分支
分支合并完成后,两个分支的代码就都是一样的了。
相见即是缘分,希望大家暴富暴美暴桃花!😀😀😀