文章目录
SVN介绍
SVN简介
SVN全称为Subversion
,他是一个开源代码的版本控制系统
。
SVN可以管理随着时间改变的数据,这些数据存放于一个中央仓库
中。这个中央仓库就像一个普通的代码服务器,不过他会记住每次文件的变动。
SVN支持多人协作共同开发项目,如果多个人修改同一个文件,他能自动将其进行合并,方便程序员进行判断代码的存舍。
主要作用
-
1、目录版本控制
SVN实现了一个
虚拟
的版本管理文件系统。能够依时间跟踪整个目录的变动。目录和文件都能进行版本的控制。 -
2、真实版本历史
SVN中,可以增加(add)、删除(delete)、复制(copy)和重命名(rename),无论是文件还是目录,所有新加的文件都会从一个新的、干净的版本开始。
-
3、自动提交
一个提交动作,不是全部更新到了档案库中,就是完全不更新。
这允许程序员以逻辑区间建立并提交变动,以防止当部分提交成功时出现的问题。
基本概念
-
Repository (源代码库):源码统一存放的地方。
-
Checkout (提取):当你手上没有源代码的时候,你需要从Repository checkout 一份。
从源代码库中下载代码。
-
Commit (提交):如果修改了代码,则需要向 Repository 中 commit 提交代码。
你修改了代码,需要让别人可以使用,则需要进行提交操作。
-
Update (更新):当你已经 checkout 了一份源代码,update 后就可以和 Repository 上的源代码同步。
别人提交了,你需要进行更新。
SVN安装
SVN需要使用者去进行下载和安装操作,具体软件分为服务端
和客户端
两部分。
SVN下载(服务端)
下载SVN,可以在下列链接中去进行下载操作:
https://www.visualsvn.com/
SVN下载(客户端)
客户端下载,需要进入下列链接:
https://www.tortoisesvn.net/
上面的两个安装文件下载成功后,如下:
服务端安装
1、双击VisualSVN-Server-4.3.6-x64.msi
安装文件。
2、勾选“同意”,继续下一步
3、选择默认的安装即可,下一步
4、设置服务端的安装路径、资源存放目录及端口。
5、使用默认配置,下一步
6、如果出现下列问题,直接选择“ignore”忽略即可
7、等待安装,安装完成后选择复选框(可不勾选),继续下一步
8、出现下列界面,表示安装配置完成
此时的指定磁盘中的文件目录如下所示:
客户端安装
1、双击TortoiseSVN-1.14.1.29085-x64-svn-1.14.1.msi
,进行安装操作
修改指定位置设置。
2、设置安装路径
将安装路径进行设置
E:\software\SVN\TortoiseSVN\
3、进行安装操作
4、判断是否安装成功
在桌面或者文件夹中,右键鼠标,出现如下工具列表示安装成功:
SVN配置
将服务端和客户端工具安装成功后,需要对其进行一些设置操作。
服务端需要
提供IP
、端口
、账号
、密码
等,供客户端使用。
设置IP和端口信息
设置Server Name
属性,建议使用本机IP
。
查看本机IP,采取如下方式:
win + R
,输入cmd
:
在界面中输入ipconfig
查看ip信息:
【知识扩展:】server name 有哪些设置值?分别是什么含义?
- 1、
127.0.0.1
:只能本地自己访问 - 2、
电脑用户名
:只能本地自己访问 - 3、
当前IP
:局域网范围其他电脑访问
设置访问账户和密码
为了开发过程中的安全问题,需要指定谁可以访问,谁可以操作等权限安全问题。
在svn 服务端
,右键 User
,选择create user
设置账号密码信息。
可以支持创建多个账户信息。
设定分组
右键group
,选择create group
,设定组名称。
双击已创建的分组,设定其中的人员信息。
校验配置账户是否正确
选择服务端
的Repositories
,右键选择Browse
,自动打开浏览器,输入账号密码。
输入账号密码,测试能否成功进入仓库浏览界面。
SVN使用
新建版本仓库(可以多个仓库)
1、选择服务端
的Repositories
,右键选择Create new Repository...
。
2、选择默认设定,下一步
3、设定仓库名称,下一步
4、设定仓库目录
5、设置仓库访问权限
6、上面的权限一般选择默认的所有读写权限,继续下一步
签入项目到SVN(import)
1、拷贝仓库的URL
2、选择指定的项目,右键选择TortoiseSVN
,选择import。
3、将上一步拷贝的仓库地址粘贴到地址栏
4、选择永久权限
5、输入账户名和密码
6、导入成功
7、仓库右键刷新,在服务端能看到下列效果
检索项目(check out)
当某些开发者需要下载服务端的代码时,可以按照如下操作进行。
1、复制要下载的项目的远程地址
2、在需要放代码的文件夹中,右键选择SVN Checkout
。
3、输入远程仓库url、文件存放路径等
4、点击ok后,拉取信息
提交操作(commit)
当程序员进行项目代码的编写后,需要将修改后的代码提交至远程仓库
中。
1、新建文件,右键选择TortoiseSVN
,选择Add,将文件添加到版本列表中(本地
)。
2、再次右键该文件,选择SVN Commit...
将文件提交(远程
)
3、提交成功
4、查看仓库
【小结:】
新增文件都需要
add
操作!
更新操作(update)
当程序员,针对服务端已存在
的文件,进行了修改
操作。此时需要将新的代码进行服务端的更新操作。
1、创建新的文件夹B,模拟其他程序员对服务端指定文件做了修改操作
2、在B文件夹
中,对Test.txt(服务端存在)
文件,进行修改操作。
3、B文件夹
将指定的文件进行提交操作
4、切换回文件夹A
,将文件夹A中的代码和服务端同步
由于此时文件夹A
中的Test.txt
文件内容还是旧值:
但服务端的该文件信息,已经被修改!此时如果需要让文件夹A
中的信息与服务端数据同步,则需要对文件夹A
中的指定文件进行Update
操作。
执行SVN Update
操作之后,文件夹A
中的Test.txt
文件信息如下所示:
和服务端的数据保持了一致!!
SVN版本冲突问题解决方式
出现冲突的原因
假设两个程序员,都针对服务端版本号为4时的Test.txt
文件进行了修改操作。
程序员A,先进行修改后的提交操作,并且提交成功!
此时服务端指定文件的版本已经
由4升到了5
。
程序员B,在程序员A提交成功后,将自己修改的信息进行提交操作。
此时服务端的文件版本已经不匹配!
导致出现提交失败!
【注意:】SVN 是针对 同时修改 同一行 提交才会出现冲突!
不是同一行,SVN会默认对其进行合并操作!
模拟问题出现
1、新建文件夹A和文件夹B,将服务端的代码进行checkout操作。
之前创建过的文件夹,进行删除测试!
2、A用户修改Test.txt
文件中的内容,提交至服务器中
3、B用户也对相同的一行
信息进行了修改
,并进行提交操作!
冲突解决的三种选择
-
1、放弃自己的更新,使用
SVN revert(回滚)
,然后提交。这种情况,不需要使用
SVN resolved(解决)
。 -
2、放弃自己的更新,使用别人的更新。
使用最新获取的版本,覆盖目标文件。
执行resolved filename
并提交,选择文件–右键–解决。 -
3、手动解决。
商讨好代码存留,手动更新文件。
然后再执行resolved filename
来解决冲突,最后提交。
解决冲突
1、在B用户
的当前目录下,右键选择SVN Update
,执行update(更新)
操作。
执行操作后,当前的指定文件中会出现如下的几种文件:
2、选择冲突文件,右键,选择TortoiseSVN
,然后再选择Edit conflicts
。
则会出现如下所示的一个文件比较工具:
3、解决冲突
【解决一】如果想使用 Theirs 窗口(服务端),则可以直接采取如下操作:
【解决二】如果想使用自己的,则可以进行如下操作:
【解决三】如果都想保留,则采取如下方式:
将服务端的 粘贴到此处
,将自己的也粘贴到此处
:
然后点击Mark as resolved
,再点击保存:
此时,用户B
中的指定文件夹中的信息变为如下所示:
再次执行提交操作:
此时,服务端的代码信息如下所示: