软件开发的过程是个复杂、耗时、耗力的过程。通常要有很多开发人员参与编写代码。
这样就会出现种种代码管理混乱的问题,这些问题容易引发BUG,增加开发人员的工作量,增加软件开发与维护的成本。因此项目中会使用配置工具管理这些代码,解决上诉问题。
市面上常用的两种配置管理工具:SVN,GIT
这边文章要和大家介绍的就是SVN
什么是SVN呢,下图给出了SVN与开发们之间的关系
SVN的作用:
解决代码管理混乱问题
不用备份多个版本,占用磁盘空间大解决代码冲突不易引发bug可以追溯问题代码的修改人和修改时间容易恢复至以前正确版本可以进行权限控制降低项目版本发布难度
如何使用SVN呢?
一、环境配置
1. 安装SVN服务器
双击打开SVN服务器安装程序
点击“Next”按钮
勾选“I accept the terms in the License Agreement”复选框,点击“Next”按钮
勾选“VisualSVN Server and Administration Tools”单选框并勾选“Add Subversion command-line tools…”复选框,并点击“Next”按钮
点击“Standard Edition”按钮,选择安装类型
选择好程序安装路径和后续项目的文档存放文件的位置和端口号后点击“Next”按钮
如下图显示443端口被占用,点击“OK”按钮
修改端口为8443,点击“Next”按钮
点击“Install”按钮
等待安装
安装完成,不选中复选框,点击“Finish”按钮
我们进入之前选择的程序安装路径下的bin目录看是否有svnadmin.exe和svnserve.exe两个文件
设置环境变量的目的就是使得程序安装路径 D:\Program Files\VisualSVN Server\bin 下的svnadmin.exe和svnserve.exe两个程序可以直接使用
2、安装SVN客户端
双击“TortoiseSVN”客户端安装程序
等待安装
点击“Next”按钮
点击“Next”按钮
选择客户端程序的安装路径(可以根据个人喜好选择,小编选择了D:\Program Files\TortoiseSVN),再点击“OK”按钮
跳转到了之前的界面,可以看到路径已经更改成功了,点击“Next”按钮
点击“Install”按钮
等待安装
安装完成,点击“Finish”按钮
桌面右击,菜单栏里显示有“TortoiseSVN”,表示SVN客户端安装成功
二、SVN Manager工具在SVN服务器上创建用户、组、版本库并设置版本库的访问权限
服务器安装完成后,我们在服务器上创建用户、组、版本库并设置版本库的访问权限
1、打开SVN服务器管理程序
点击开始菜单---点击“所有程序”---点击“VisualSVN”---点击“VisualSVN Server Manager”启动SVN服务器管理程序
跳出SVN服务器管理界面
2、服务器中创建用户
右击左侧导航栏中的“Users”,点击"Create User…"创建新用户
跳出创建新用户窗口,输入即将创建的用户名,用户密码,并确认密码(通常用户名和密码都是参与项目的,并使用SVN这个工具的人员进行设置的)
小编随手创建的几个用户
创建好了之后就可以在SVN服务器管理界面的右侧内容窗口中看到设置好的用户,下面是小编创建的几个用户
3、服务器中创建项目组
用户创建好了之后就可以创建项目组了,右击导航栏中的“Groups”--点击“Creat Group”
输入组名,点击“Add”按钮选择需要添加到组里的用户,再点击“ok”按钮
4、创建版本库并设置版本库的访问权限
右击左侧导航栏中的“Repositories”,点击“Creat New Repository”创建版本库(方便用户登录SVN配置管理器在创建的版本库中存取数据)
跳出创建新仓库的界面,选择“Regular FSFS repository”(常规FSFS仓库),再点击“下一步”按钮
输出即将创建的仓库名称(写当前的项目名称,便于使用和管理),再点击“下一步”按钮
选择“Empty repository”(空仓库),再点击“下一步”按钮(实际公司项目选择下面一种带有目录的仓库比较多)
勾选“Customize permission”(自定义权限/允许),点击“Custom…”
设置权限的类型(1、没有使用权 2、只读 3、读写),点击“确定”按钮
点击“Add…”按钮,选择可以拥有权限的人(可以选择整个组,也可以选择特定的用户)
跳转界面,显示仓库中的组已经创建成功(可以看到仓库的类型:FSFS,)
浏览SVN服务器上的版本库的方式(两种)
方法一、SVN Manager工具中,选择库后点击browse(浏览)
在SVN Manager窗口左侧导航栏中找到想要浏览的库,右击--点击browse浏览
输入用户名,密码,点击“登录”按钮
成功访问
方法二、用SVN客户端登录浏览
右击桌面---点击“TortoiseSVN”----点击“Repo-browser”
输入要访问的版本库的URL地址,格式如下
输入用户、密码,点击“OK”按钮
成功登录(这边小编的版本库还是空的!)
注意
我们使用SVN客户端访问服务器上的版本库时,必须保证服务器上的VisualSVN Server服务是开启的
我们可以打开服务窗口查看该服务是否开启,具体操作如下
版本库目录下的文件的作用
conf文件夹---配置文件(权限)
authz=authorization 存放用户或组的权限(读、写)
passwd=authorization 存放用户和密码
svnserve.conf 存放SVN服务器的配置文件
db----存放数据
hooks---钩子脚本:自动触发部署
locks---上锁
TortoiseSVN图标集
文件夹常规:表示本地文件夹与服务器上的文件相匹配
文件夹冲突:commit本地文件夹时显示与服务器上的文件冲突(通查出现在多人同时编写同一个文本的情况下)
文件夹已删除:服务器上已经没有这个文件夹了
文件夹无版本控制:新建文件夹还未添加到服务器上
添加文件夹:在本地新建文件夹虽然add,但还未commit到服务器上
文件夹被修改:文件夹被修改,还未commit到服务器上
文件夹只读:文件夹只允许用户阅读
锁定:文件夹被锁定,除了施加锁定的那个用户其他用户均无法修改服务器上的这个文件夹
文件被修改:文件修改过后,还未commit到服务器上
文件常规:文件夹与服务器上的文件一致
文件冲突:文件与服务器上的文件冲突
SVN客户端基本图形化操作
Check out (将服务器上的版本内容迁出到本地里)
图形界面创建的版本库的签出
方法一
在本地创建一个空的文件夹,进入文件夹后,右击空白处--点击“SVN Checkout”
输入需要签出版本库的URL地址(格式:https://IP:port/svn/版本库名称),点击“OK”按钮
输入有访问该版本库权限的用户即密码,点击“OK”按钮
点击“OK”按钮
方法二、使用客户端浏览服务器上的项目文件
桌面右击---点击“TortoiseSVN”--“Repo-browser”
输入要访问版本库的URL地址
将SVN服务器上的版本库签到本地的条件及成功状态:
- 服务器上的VisualSVN Server是开启的
- 本地地址的文件夹是空文件夹
- 签出成后该文件夹会显示打勾的状态
Add 添加文件
在签出的文件夹里新建文件test1.txt
内容如下
右击需要添加到SVN服务器上的文件---点击“TortoiseSVN”---点击“Add”
点击“OK”按钮
点击“OK”按钮
添加完后的文件图标会从问号变为加号
Commit 提交(add、修改)
一种情况:add后commit
在我们的Checkout到本地的文件夹中新建一个test2.txt文件
右击test2.txt--add
文本图标就会显示+号
右击test2.txt---SVN Commit,提交到服务器上
第二种情况:我们修改完文件,要commit到服务器上
右击要提交的文件---点击“SVN Commit”
Update 更新
右击要更新的文件或文件夹---“SVN Update”
Delete 删除(删除之后要commit,才会生效)
右击要删除的文件或文件夹---“TortoiseSVN”---“Delete”
Rename 重命名(从命名后空白处右击commit)
改名后需要在空白处右击--点击“SVN Commit”或者进入上一层目录右击---点击“SVN Commit”
将文件名由“test2.txt”改为“test.txt”
空白处右击---点击“SVN Commit”或者进入上一层目录右击---点击“SVN Commit”
Revert 还原(恢复到文件修改之前的版本)
修改文件内容后,在未commit之前,我们可以右击文件---“TortoiseSVN”---“Revert”将文件还原到修改内容之前的文件版本
Show log 显示日志
export(导出,但不在版本库内,修改不影响版本库)
方法一、登录SVN客户端,右击要导出的文件所属的文件夹---点击“Export”---选择存放的本地路径
方法二、右击Checkout到本地的文件夹---点击“TortoiseSVN”---点击“Export”---选择存放的路径
Import 导入
右击要导入的文件所在文件夹,点击“TortoiseSVN”---“Import”
Get lock 锁定(锁定后的文本其他人编译后无法commit)
右击要锁定的文本---点击“TortoiseSVN”---点击“Get lock”
Release lock 解锁(锁定的人主动解锁后,其他人可以编译并commit)
右击锁定的文本或文件---点击“TortoiseSVN”---点击“Release lock”
Diff 差异比较
右击要进行差异比较的文件---点击“TortoiseSVN”---选择一种差异比较方式
Edit Conflict 处理冲突
1、两个开发编写同一个代码文件
2、第一个开发编写好代码后commit 提交到服务器上
3、第二个开发未先Update,也直接修改了文件,然后commit,提交到了服务器上
4、提示需要先Update,但选择Update后提示无法更新,有Conflict
5、这是第二个开发需要解决冲突,本地文件中会出现以下的几个文件
6、右击需要解决冲突的文件(有冲突的文件上会有黄色感叹号的标志)---点击“Edit conflict”
7、根据冲突内容人工判断解决,最后commit
Update to revision(更新版本到哪个版本)
右击需要更新版本的文件---点击“TortoiseSVN”---点击“Update to revision”
可以通过show log 查看文件的日志信息,便于回到哪个版本的文件
relocate(服务器IP地址变了,可以用来更新地址)
工作当中要养成习惯,工作之前先Update,再锁定
增、删、改都要commit
用命令行创建版本库
1、建立版本库
打开dos命令窗口,输入svnadmin create e:\Repositories\版本库名称
(Repositories指的是服务器安装时指定的版本库目录,这里输入的路径要和安装服务器时指定的路径一样)
2、配置e:\Repositories\conf文件夹下的三个文件
Svnserve.conf:SVN服务器的配置文件,讲一下配置取消注释
passwd:存放用户和密码,如增加一下用户和密码
authz文件:存放用户或组的权限(读、写),配置如下
3、启动服务
输入svnserve -d -r e:\Repositories
-d指服务作为一个独立的端口监控进程,--r即批定要暴露的仓库路径,如本机仓库路径为E:\Repositories\项目,那么客户端svn访问时只需采用如下地址即可访问:svn://ip/项目,E:\Repositories 就不需要展示出来,客户端svn访问时只需采用如下地址即可访问:svn://ip。(注意,ip后面不要跟端口号)
如果输入svnserve -d -r e:\Repositories\版本库名称
Subversion的标准目录结构
Trunk-----主开发目录
Branches-----分支开发目录
Tags----tag存档目录,不允许修改