svn温习

之前使用了svn,但是感觉还不透测,所以温习一下

svn分为服务端和客户端,

一般代码仓库不归你管,一般服务端时不用安装的,只需要安装个客户端,项目经理给你svn地址即可。

但是为了彻底的的了解一下svn,打算安装一下服务端看看,

svn服务端安装与使用

服务端地址网上查一下即可,这里看一下服务端软件下载好之后长什么样子:

 

 这个版本较高啊

1、配置好安装目录、仓库目录、端口(选8443)、这个版本还有个backups(备份地址),剩余的都选择默认项即可,一直到最后,finish

来看看安装好之后的文件夹

 

 在,webApp中假如要建立一个项目比如叫shop,那么我们称之为shop目录为shop项目的版本仓库,因为在svn中没有项目的概念,只有项目版本仓库的概念

 

 现在的shop只是一个普通的文件夹,还没与svn进行连接,还未转换为版本仓库。

那么如何将shop目录与snv连接,转换为版本仓库呢?

2、创建版本仓库基本语法:(在dos窗口中执行)

svnadmin  create shop  文件夹路径(shop仓库)

 

 如果执行没有问题,代表是正常的

我们未执行以上命令之前,shop目录是空的,执行成功之后,shop文件夹下回出现一些文件:

 

 下一步:进行服务器监管

SVN--->svn://localhost或ip地址 访问到相关数据仓库(如shop仓库)

基本语法:同样是在dos窗口执行

svnserve  -d(后台运行) -r(监管目录) 版本仓库路径

 

 光标会在闪烁,因为-d参数代表 后台运行  , 如果关闭dos窗口 就失效了。

以上指令,就可以让svn://localhost或ip地址 在浏览器 访问到shop版本仓库文件夹了

 

 不带端口号也行

3、权限控制

默认情况下。svn是不允许匿名用户上传文件到服务器端的,必须更改项目的相关配置文件

那么比如说更改shop版本仓库的配置,就需要在shop文件夹下的conf文件进行相关修改

 

 打开svnserve.conf文件  第19行代码

 

 将前面的#去掉,并且将read 改成write  那么当前仓库 所有的用户就都有 刻=可读、可写权限了

 

 客户端安装与使用

1、安装

svn客户端安装地址可以在网上搜索一下,下载下来的软件如下:

 

 64位的,根据自己电脑位数下载对应包

 双击svn客户端软件安装包(先不急安装汉化包),点击同意许可证--设置软件安装目录(位置可以随意安装、不需要注意 中英文等情况)---一直下一步到install按钮就可以了--直到finish完毕。

客户端软件安装完之后,注意要重启一下电脑,不然svn(小乌龟)是无法看到的

右键桌面出现:

 

 就代表客户端在安装成功了

 如果想安装那个汉化包,就双击那个汉化包安装就ok了,右键,打开svn的设置,语言设置为简体中文即可

 

 2、使用客户端软件连接 svn服务器

检出操作 (与服务器端 牵手)

首先在您的项目目录,右键---》tortoisesvn---》版本库浏览器---》输入svn浏览器服务地址:如(把我刚建立的shop仓库检出一下)

 

 

 

 

 

 打开这个检出的文件,把隐藏文件打开,会看到一个.svn的文件,这代表我们已经和svn服务器建立联系了

 svn常规使用

先了解图标集,

右键--》svn--》设置---左侧选择 图标集

 

 图标含义:

 :客户端文件与服务器端文件完全同步时

 

:客户端提交的文件与服务器端有冲突

 

:客户端要提交的文件在服务器端被删除了

 

:当我们编写的文件已添加到提交队列,还未提交,系统会自动加上这个图标,当我们下一次执行commit提交指令时,就会被提交到服务器端

 

:当我们编写的文件没有添加到上传队列时,系统会自动添加这个图标

 

:客户端文件有修改,还未提交时

 

:当客户端文件以只读形式存在时

 :当服务器端文件已锁定,客户端文件就会出现锁定图标,服务器端的locks文件就是控制锁定文件的

 

 :客户端文件已忽略,不需要上传,就会显示该图标

 

 以上就是常用的图标集的解释

 下面来尝试一下忽略功能

我先尝试提交个文件到我的服务端仓库

我尝试提交了一下,出了个错

出现这种问题肯定是SVN服务器出现了问题,需要修改其三个配置文件:
1、svnserve.conf:
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

2、passwd:
[users]
admin=123  //这代表 一个账号admin 对应的密码是123

3、authz:
[groups]
[/]
admin= rw

出现authorization failed异常,一般都是authz文件或者svnserve.conf里,用户组或者用户权限没有配置好,只要设置[/]就可以,代表根目录下所有的资源,如果要限定资源,可以加上 子目录即可。

 然后在提交就会让输入账号密码:输入账号:admin   密码:123 即可,然后再提交就不会报错了

接下来继续尝试忽略功能

右键需要忽略的文件,选tortosesvn,选择增加到忽略列表即可

然后再提交,就不会提交到服务器版本库了

 

 也可以忽略某一类型的文件:

 

 版本回退功能

我们先在一个文件中加一些文字:

 

 然后提交一下;

我再修改一下内容提交一下

 

 ok,假如我们发现,我们版本2有些错误,想回到1版本,那么我就可以使用版本回退功能,回退到一版本

 

 

 

 可以看到有两种回退方式,1、根据日志回退 2、根据版本号回退

那么我们需要查看日志,查看版本号,来进行回退

 

 根据我们提交的日志,选择,后确认回退到某一版本

我真正查看日志时报错了:

 

 解决方案是:

将svnserve.conf里的anon-access=read 改为anon-access=none。

 

 然后就可以正常查看日志了:

 

 假如我想回到1版本,那么我就可以选择1版本的日志,然后点击确认

 

 发现代码变成1版本的内容了

然后再查看一下日志看看

 

 发现当前版本是粗体

然后我又选择最上边的最先版本,3版本,点击确定

 

 代码又变成最新版本了,

那么我们在回退到1版本,更改点东西再提交呢?回事==会是神马==什么情况?来看看

 

 ok,很奈斯,和自己想象的是一样的,版本切换自如,奈斯

下面来说一下版本冲突的解决:

 在开发过程中,如果两个人同时修改一个文件,就会出现版本冲突问题。

我们来模仿一下,我现在有一个文件夹已经是最新版本的代码了,然后我再建立一个文件夹,更新一下代码,那么此时两个文件夹(相当于两个人)的内容是一样的

 都是版本4,

 

 

 此时,shop文件夹修改一下文件内容,记得是同文件,比如修改成旺财修改

 

 然后提交一下shop文件夹的svn

然后,我们在shop2文件夹上,未拉取的情况下,修改一下同文件的内容为

 

 此时,shop2,也就是小强去提交了,想想会发生什么情况???

 

 我们发现,小强提交不上去了,提示让更新一下,因为旺财已经把心文件提交上去了,这提示是好的,那么我们尝试更新一下,此时肯定是冲突的!!!

来看看shop2,小强更新一下会发生什么

 

 

 提示有冲突文件!!!

解决之道:

1、不要在同时间段内安排两个人开发

2、两个人分模块开发,避免开发同一模块

3、如果发生冲突怎么解决,svn会生成三个文件:

 

 除此之外,在原文件会提示出那些地方冲突了:

 

 如果使用vscode编辑器,解决冲突是很方便的!!!

解决冲突之后,记得把生成的三个文件删除掉

我们一般在整合后的文件解决冲突即可

然后再提交就没问题了

 配置多仓库

在项目开发过程中,我们可能同时进行多个项目的开发,那么我们如何进行项目监管呢?

通过svnserve进行仓库监管,但是监管指令只能监管一个文件夹,而不能同时监管多个仓库。。。

答:可以通过监管webAPP总目录来达到监管所有项目的目的:

打开dos窗口,输入以下命令:

SVNserve -d -r D:\svn\webApp

 

 

 没有报错,光标闪烁,代表监管成功

然后就可以通过svn://localhost或ip地址 来访问webapp仓库了

 

 

 如果要访问:

shop项目:svn://localhost/shop

WeChat项目:svn://localhost/weChat

这种就称之为配置多仓库

注意,不能把webApp跟文件夹创建为版本仓库,否则会报错,也创建不成,只能在webApp下创建一个文件夹,将其创建为版本仓库了

权限功能配置:

如果使用权限控制,有一个前提是:必须首先开启权限功能

在每一个仓库中,都有一个conf文件夹,里面有三个文件:

authz文件:授权文件

告诉哪些用户具有哪些权限

passwd文件:认证文件

标识当前snv系统中某个仓库有哪些相应的用户以及相对应的密码

默认情况下,以上两个文件都是禁用的,如果要使用,首先需要开启:

svnserve.conf:核心配置文件

 开启步骤如下

1、打开svnserve.conf文件

 

 

 

 注释掉匿名用户的可读可写权限

2、开启认证文件(passwd)与授权文件(authz)

 

 27和36行,将前面的#号去掉,代表分别开启了认证文件和授权文件  (注意前面的空格也要去掉)

然后保存一下svnserve.conf文件

如何进行授权文件和认证文件的相关配置工作呢?

3、编写认证文件,配置相关用户名和密码

打开passwd(认证文件)

 

 配置一个管理员用户和一个普通用户(admin:123     ziji:123456)

保存一下

4、编写授权文件

打开authz文件

 

 groups:组信息,首先要对仓库进行分组操作

 

 我们创建了两个组,admin组和idcast组

admin组有admin、张三、李四三个用户

idcast组有idcast 一个用户

有了组的配置之后,还需要配置,对应组的权限:

 

 

以上配置,代表shop目录下的admin组有可读可写权限,idcast组只有 只读权限   匿名用户只有只读权限

测试一下以上的配置:

新建一个文件夹

拉取shop仓库

 

 然后会弹出让输入账号密码,输入之后,就可以检出了!!!

 svn服务配置与管理

我们以上都是在dos窗口中监听仓库的,如果突然关机了,dos窗口的这个命令还会重启吗?如果不重启就很麻烦。

1、配置自启动服务:

sc create SVNservice binpath= "D:\subversion\bin\svnserve.exe --service -r D:/svnroot" start= auto

解析一下上述命令:

sc create 服务名称:创建系统服务 服务名称(SVNservice

binpath= 空格 :制定==指定相关的目录  (当前我们安装的svnserve.exe指令的地址  )

--service :以服务的形式进行运行

-r:监管服务   监管那个目录呢?D:/svn/webApp目录

start= 空格auto :自启动服务

 此命令需要用超级管理员在dos窗口执行

在控制面板中的管理工具中的服务中可以看到这个服务

 windows系统上创建批处理文件

启动服务 net start 服务名称

停止服务  net stop 服务名称

删除服务  sc delete 服务名称

把以上三个指令分别创建个text文件放进去,后缀改成.bat  然后我们只需要点击此文件 就可以 运行相对应的指令了

 模拟正式开发环境

我们一直没提到过hooks文件,钩子程序,它可以做到,同步更新的作用,

我们打开hooks文件夹看一下:

 

 这里只讲,如何通过钩子程序实现数据的同步更新,已达到自动化部署

post-commit.tmpl:事务完成后所出发的钩子程序

钩子程序默认可以使用批处理程序和shell指令来进行编写

通过批处理指令来编写钩子程序

1、指定svn的工作目录

设置服务器端svn路径

SET SVN="D:\svn\bin\svn.exe"

2、指定web服务器工作目录

SET DIR="D:\server\apache\htdocs\shop"

3、通过update指令实时更新数据到DIR目录中

svn update %DIR%

4、将post-commit.tmpl复制一份,后缀改成bat

 

 

然后将里面的内容清空

将三个命令放进去:

 

 

 

 

 

 

 

 

 

posted @ 2020-05-01 18:30  古墩古墩  Views(190)  Comments(0Edit  收藏  举报