SVN的使用---Windows环境:概述、安装配置、使用详解、多仓库与权限控制、服务配置与管理、扩展程序

1、SVN

1.1、SVN概述

1.1.1、为什么需要使用svn版本控制软件

  • 协作开发
  • 远程开发
  • 版本回退

在这里插入图片描述

1.1.2、解决之道

SCM:软件配置管理
所谓的软件配置管理实际就是对软件源代码进行控制与管理。

CVS:元老级产品
VSS:入门级产品
ClearCase:IBM公司提供技术支持
SVN:主流产品

1.1.3、什么是SVN

  • SVN的全称是subversion
  • SVN是近年来崛起的版本管理工具,是CVS的接班人。目前,绝大多数软件公司都使用SVN作为代码版本管理软件。

特点:

  • 操作简单,入门容易。
  • 支持跨平台操作(Window,linux,MacOS)
  • 支持版本回退功能(时间机器)

1.1.4、获取SVN软件

属于C/S结构软件(客户端与服务端)

服务器端软件:VislualSVN
网址:https://www.visualsvn.com/downloads/

在这里插入图片描述

客户端软件:Tortoisesvn
网址:https://tortoisesvn.net/downloads.html
在这里插入图片描述
下载客户端汉化语言包:
在这里插入图片描述

2、SVN软件安装与配置

2.1、项目开发工作流程

在这里插入图片描述

2.2、服务端软件安装(VislualSVN)

1.双击安装服务端软件
在这里插入图片描述
2.勾选复选框同意,然后点击Next
在这里插入图片描述
3.选中默认配置,点击next
在这里插入图片描述

4.设置服务端的安装路径,资源的存放目录以及端口号(选择8443端口号,443一般会被占用),点击Next。
在这里插入图片描述
5.选择不启用存储库搜索索引
在这里插入图片描述

6.选择自定义创建账号,点击【Next】进入下一步。

注意:当您选择启用存储库搜索索引或 Windows 身份验证时,您需要开始 45 天的评估或输入足够的许可证密钥,因为这些功能在免费的社区许可证下不可用。
在这里插入图片描述
7.点击【Install】进行安装。
在这里插入图片描述
8.安装完成后,可以勾选复选框,然后选中Finish
在这里插入图片描述
9.出现一下窗口,表示安装成功。
在这里插入图片描述

2.3、SVN服务端配置

2.3.1、创建一个项目

1.首先在SVN服务端创建一个公有目录WebApp作为项目目录
在这里插入图片描述

2.在WebApp目录下创建Shop文件夹,作为Shop(版本仓库)。
需求:搭建一个商场系统,所以创建Shop目录。
说明:svn中没有项目目录的概念,一个项目就代表一个版本仓库。
在这里插入图片描述
3.创建版本仓库
注意:目前的Shop还只是是一个普通文件夹,还需要和svn产生联系,把普通文件夹转化为一个版本仓库.
Dos基本语法:

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

管理员方式打开Dos窗口:
在这里插入图片描述
4.如果配置成功,那么shop应该多了6个文件
目录说明:

  • conf:整个项目的配置文件
  • db:数据最终存放在此文件夹
  • hooks:钩子文件,比如在开发过程中使用同步复制,同步更新这个时候就可以用到钩子指令
  • locks:追踪用户
  • format:一个整数类型数据,表示版本仓库的层次结构
  • README.txt:说明文件
    在这里插入图片描述

2.3.2、进行服务端监管

什么是监管???
如:
在PHP中:Apache — >http://localhost或(Ip地址)访问到htdocs目录下相关文件(服务器端监管)
在SVN中:SVN —> svn://localhost或(Ip地址)访问到相关的数据仓库( 通过监管可以实现在客户端访问到服务端,如shop 仓库)

基本语法:

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

如下图所示:
说明:光标一直闪烁代表指令执行成功,注意当前窗口不要关闭,如果关闭代表监管指令的强制终止,就没办法进行数据的链接了。
在这里插入图片描述
通过以上指令,我们就可以通过svn://localhost 或 ip地址就可以直接指向Shop版本仓库。

2.3.3、权限控制

说明:默认情况下,SVN服务器是不允许匿名用户上传文件到服务端的,所以必须更改项目的相关配置文件。
在这里插入图片描述
从上到下的目录依次是:

  • 授权文件
  • 钩子的模板文件
  • 存储登录相关的用户名,密码的相关程序
  • svn的核心配置文件
    在这里插入图片描述
    write:可读可写
    read:只可读,不可写。
    在这里插入图片描述
    在这里插入图片描述

2.4、客户端软件安装(Tortoisesvn)

在这里插入图片描述

2.4.1、客户端软件安装步骤

1.双击安装程序,选择Next.
在这里插入图片描述
2.选择Next
在这里插入图片描述
3.选择安装路径
注意:想要集成到idea中要勾选第一个:Will be …
在这里插入图片描述
4.点击【Install】进行安装。

在这里插入图片描述
5.是否需要重启,根据自己的需求进行选择。
在这里插入图片描述
6.选上,更新日志,可以查看更新的版本详细信息,也可以不够选,点击Finish
在这里插入图片描述
7.安装成功后没有什么窗口,可以在任意空白地方,右键,出现以下内容表示安装成功。

在这里插入图片描述

2.4.2、客户端汉化包安装步骤

双击运行语言包,系统会自动寻找客户端软件安装目录,并进行自动安装。
在这里插入图片描述
在这里插入图片描述

安装完成后可以在设置中切换中文和英文:
在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述

2.5、使用客户端软件连接SVN服务器

2.5.1、Checkout检出

说明:第一次与服务器进行连接时都需要进行Checkout检出操作。

首先在你的项目目录鼠标右键----》TortoiseSVN—》版本库浏览器—》输入SVN服务器地址

步骤:在D盘创建一个目录jingli,来模拟项目经理使用的过程

在这里插入图片描述
在这里插入图片描述
说明:输入ip地址进行连接,如果是本机也可以输入localhost.
svn://SVN服务器地址---->Shop项目(仓库)
在这里插入图片描述
说明:单击检出功能,系统会自动检出数据到客户端。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

显示隐藏文件:打开隐藏功能如果能看到.svn这个文件夹就说明客户端和服务端连接起来了,检出成功;
在这里插入图片描述

在这里插入图片描述

3、SVN使用详解

3.1、三大指令

3.1.1、checkout 检出操作:

  1. 链接到SVN服务器端
  2. 更新服务端数据到本地

注意:Checkout只在第一次链接时操作一次,以后进行更新操作请使用Update更新指令。

3.1.2、commit 提交代码:

  • 提交本地数据到服务端

说明:当我们检出成功后,目录会有一个绿色的小图标。
在这里插入图片描述

说明:一旦检出操作成功,右键的checkout检出操作会变为更新、提交操作。
在这里插入图片描述
在这里插入图片描述
显示以下界面代表提交成功:
在这里插入图片描述
以上工作大部分都是由项目经理完成的,如果公司新来一个程序员李四,他要做哪些操作呢?

在李四的电脑上创建一个文件夹lisi,来模拟李四的的操作:
在这里插入图片描述
首先:项目经理会告诉李四的连接svn服务器的地址,通过检出操作与服务器进行链接。
在这里插入图片描述
填写svn服务器连接地址:
在这里插入图片描述
在检出窗口中就可以看到,当前服务器中所拥有的的源代码。
在这里插入图片描述
右键检出操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检出效果如下:
在这里插入图片描述
其次:当李四的项目开发的源代码已经写好后,需要进行提交操作commit:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果如下:
在这里插入图片描述
总结:以上指令通常是在模块开发完毕后上传。

3.1.3、update 更新操作:

项目经理想要查看当前整个项目的进度:需要更新svn服务器的数据到本地。
在这里插入图片描述

在这里插入图片描述
系统会自动更新最新的数据到本地:
在这里插入图片描述

3.2、图标集与忽略功能

3.2.1、图标集

说明:当项目进行检出操作后,发现很多文件上都有图标,那么这些不同的图标都代表有什么样的含义呢???
我们需要掌握常见的图标,所表示的含义。

1.查看图标集
在这里插入图片描述
在这里插入图片描述
2.常规图标:
在这里插入图片描述
含义:当客户端文件与服务端文件完全同步时,系统显示以上图标。

3.冲突图标:
在这里插入图片描述

含义:当客户端提交的数据与服务端数据有冲突时,系统显示以上图标。

4.删除图标:
在这里插入图片描述
含义:当服务端数据已删除,那么客户端该文件将显示以上图标。

5.增加图标:
在这里插入图片描述
含义:当我们编写的文件已添加到提交队列,那么系统将自动显示以上图标。

6.无版本控制图标在这里插入图片描述

含义:当我们编写的文件没有添加到上传队列时,那么系统将自动显示以上图标。

7.修改图标
在这里插入图片描述
含义:当客户端文件有修改但未提交,此时将自动显示以上图标。

8.只读图标

在这里插入图片描述
含义:当客户端文件以只读形式存在时,此时将自动显示以上图标。

9.锁定图标:
在这里插入图片描述
含义:当服务端数据已锁定,那么客户端文件将自动显示锁定图标。

10.忽略图标:
在这里插入图片描述
含义:客户端文件已忽略,不需要进行提交上传,那么将自动显示以上图标。

3.2.2、忽略功能

  • 有些文件不希望上传到svn服务器,应该将该文件或该类型的文件添加至忽略列表。

在这里插入图片描述

说明:在进行提价操作时,会自动显示所有的文件,非常不方便。
在这里插入图片描述
1.忽略某个指定的文件。

解决:选择想要忽略的文件 右键…

  • 第一种方式(没有recursively):忽略此文件,针对的是文件。
  • 第二种方式(有recursively):以递归方式忽略,针对的是文件夹操作。
    在这里插入图片描述

2.忽略某个类型的文件。
在这里插入图片描述

效果如下:
在这里插入图片描述

3.3、版本回退

3.3.1、什么是版本回退

  • 有些时候,软件的运行可能使开发者或使用者不满意,这时我们需要把当前版本退回到以前的某个版本。

3.3.2、图解分析

说明:相比传统的方式占用内存更少,可以更加轻松的回退到之前的某个状态。
在这里插入图片描述

3.3.3、操作步骤

1.删除需求分析文件:
在这里插入图片描述
进行提交
在这里插入图片描述
当数据有更新时需要重新进行提交一次:
在这里插入图片描述
在这里插入图片描述
2.需求:突然发现刚才删除的文件删错了,这个时候就可以通过svn回退到之前的某个状态。
在这里插入图片描述
在这里插入图片描述
版本号不好记,所以开发中一般是根据日志功能进行回退。
在这里插入图片描述
根据日志信息显示要回退的状态:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果如下:之前删除的文件又有了。
在这里插入图片描述

3.4、版本冲突

3.4.1、什么是版本冲突?

说明:在实际项目开发中,如果2个人同时修改某一个文件就会产生版本冲突问题。

3.4.2、模拟版本冲突

在这里插入图片描述
新建2个目录:wangcais、xiaoqaings.
在这里插入图片描述

在wangcais目录进行第一次检查操作:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
效果如下:
在这里插入图片描述

同样在xiaoqiangs目录进行检出操作:效果如下
在这里插入图片描述

旺财在9.30时就完成了aaa.docx文件的修改工作:
在这里插入图片描述

添加一句话来模拟:
在这里插入图片描述
进行提交:
在这里插入图片描述
在这里插入图片描述

小强在10:30完成了aaa.docx文件的修改工作:
在这里插入图片描述

同样添加一句话来模拟:
在这里插入图片描述
进行提交:
在这里插入图片描述

此时会出现版本冲突问题:
在这里插入图片描述

3.4.3、解决:版本冲突

  • 合理分配项目开发时间:
    旺财:上午开发
    小强:下午开发
  • 合理分配项目开发模块
    旺财:购物车模块
    小强:文章模块
  • 通过SVN解决版本冲突问题:
    (1). 更新服务端数据到本地
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    此时会新生成3个文件:
    在这里插入图片描述
    aaa.docx:整合后的aaa.docx文件。(当出现冲突后,系统会自动整合旺财和小强所编写的文件,里面是整合后的内容。)
    aaa.docx.mine:后提交的内容,小强修改后的aaa.docx文件。
    aaa.docx.r9:9:30更新时的aaa.docx文件(起始文件)
    aaa.docx.r10:旺财修改后的aaa.docx文件。
    (2). 删除aaa.docx以外的其它3个文件:
    (3). 修改整合的aaa.docx冲突文件:
    在这里插入图片描述
    (4). 重新提交数据到svn服务器,即可解决版本冲突问题:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4、svn配置多仓库与权限控制

4.1、配置多仓库

说明:在实际开发中,我们可能会同时开发多个项目,那么我们如何进行多项目监管呢??
通过svnserve进行仓库监管,但是监管指令只能监管某一个文件夹,而不能同时监管多个仓库。
在这里插入图片描述
答:可以通过监管WebApp总目录来达到监管所有仓库的目的。

svnserve -d(后台运行) -r(监管目录) WebApp(项目总目录)

1.打开Dos窗口,输入以下指令。
在这里插入图片描述
通过以上指令,我们就可以通过svn://localhost 或 ip地址来访问E:\SVN\server\WebApp目录。
如果需要访问Shop项目,WeChat项目
Shop项目:svn://localhost/Shop
WeChat项目:svn://localhost/WeChat

4.2、权限控制功能

说明:开发中不能让每个人都有可读可写权限。
使用前提是:必须首先开启权限功能。

在每一个仓库都有一个conf文件夹,里面有3个文件。

  • authz:授权文件
    告诉哪些用户具有那些权限。

  • passwd:认证文件
    标识当前svn系统中某个仓库具有那些用户名以及相应的密码。

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

  • svnserve.conf:核心配置文件

开启步骤如下:

  1. 找到 并打开svnserve.conf文件。
    在这里插入图片描述

  2. 注释掉之前配置的匿名用户的可读可写权限。
    在这里插入图片描述

  3. 开启认证和授权文件
    在这里插入图片描述

  4. 编写认证文件,定义相关用户和密码:打开passwd文件
    在这里插入图片描述
    在这里插入图片描述

  5. 编写授权文件:打开authz文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  6. 测试:
    新建一个目录
    在这里插入图片描述
    进行第一次检出操作
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    此时说明:匿名用户具有可访问权限。
    在这里插入图片描述
    在王五目录中新编写一个文件进行提交:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    出现一下内容代表授权成功。
    在这里插入图片描述
    输入用户名、密码:admin、admin888
    在这里插入图片描述
    此时就可以上传成功了。
    在这里插入图片描述

5、svn服务配置与管理

5.1、配置自启动服务

说明:当前所有开发工作都需要这个监管指令,这个监管指令是通过DOS窗口来监管和实现的。如果当前的服务器重启了,那么这个DOS窗口显然不会自动运行了。

在这里插入图片描述
解决:可以通过windows的相关指令,把我们的监管指令追加到系统的服务中,这样系统就会随着windows的启动而启动,随着windows的关闭而关闭。

sc create SVNService binpath= "E:\SVN\server\bin\svnserve.exe --service -r E:\SVN\server\WebApp" start= auto
sc create 服务名称   binpath=空格"bin目录下的svnserve.exe的路径 --service -r 监管的目录"   start=空格 auto

1.打开运行,输入cmd指令,打开DOS环境(请使用超级管理员运行)

2.输入以下指令

在这里插入图片描述

3.查看系统服务
控制面板----windows工具(管理工具)----服务
在这里插入图片描述
双击运行,启动SVNService服务:
在这里插入图片描述

此时关闭黑窗口进行测试:
在这里插入图片描述
如果提交成功代表开启svn监管服务。
在这里插入图片描述

5.2、创建批处理文件

说明:如果想对服务进行启动、停止、删除等操作。可以做一个批处理文件,把这些指令都封装起来,以后只需要通过对应的批处理文件来进行相关的服务操作了。

批处理文件:在windows中以.bat结尾的文件叫做批处理文件,它可以执行相关的处理指令。

启动服务: net start 服务名称

停止服务: net stop  服务名称

删除服务: sc delete 服务名称

以上功能在实际项目开发中经常使用,所以可以封装为.bat批处理文件,效果如下:

首先,创建3个批处理文件:
在这里插入图片描述
依次在每个文件中编写一下指令:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后在对应的批处理文件上右键以管理员的方式运行:
在这里插入图片描述
黑窗口弹出后会自动消失:
在这里插入图片描述
在这里插入图片描述

6、模拟真实开发环境

6.1、svn工作流程

说明:以前都是通过超级管理员从svn服务器更新数据到web服务器,但是这样的缺点是:一旦更新数据太过频繁,超级管理员对这整个服务器都要进行频繁的操作,非常的麻烦。

解决:可以通过钩子程序实时更新数据到服务端。

以前:
在这里插入图片描述
现在:

在这里插入图片描述

6.2、钩子程序

  • 所谓的钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化属性的修改
  • 默认情况下,钩子的子目录(版本仓库/hooks)中包含各种版本库钩子模板。
    在这里插入图片描述
    post-commit.tmpl:事务完成后所触发的钩子程序:
    钩子程序默认情况可以采用批处理指令或shell指令来进行编写。

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

  1. 指定svn服务的端的工作目录:
    设置服务端svn路径:SET SVN="E:\SVN\server\bin\svn.exe"

  2. 指定Web服务器工作目录:SET DIR="D:\Web\Shop"

  3. 通过update指令实时更新数据到DIR目录中:SVN update %DIR%

6.4、具体使用步骤

1.复制post-commit.tmpl文件为post-commit.bat文件
在这里插入图片描述

2.填入相关批处理指令
在这里插入图片描述

3.在D盘的Web目录下创建Shop项目,并更新SVN服务器数据到本地
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
此时数据都刚更新到了本地:
在这里插入图片描述
4.新建一个目录xiaoming,在xiaoming目录中进行检出操作:

在这里插入图片描述
在这里插入图片描述
5.在xiaoming目录中编写测试文件:hhh.docx文件
在这里插入图片描述

提交:hhh.docx文件

在这里插入图片描述

在这里插入图片描述

6.效果:在Shop目录可以实时获取到最新数据
在这里插入图片描述

7.可以通过虚拟主机形式直接访问更新文件,因为Shop是模拟的,不是Web服务器,所以不能访问。
在这里插入图片描述

7、SVN扩展程序

说明:实际开发中所有的程序操作都是在SVN服务器中完成的,而SVN服务器是运行在一台真实的服务器中它本身价格是比较昂贵的,作为个人开发者如过没有一台真实的服务器进行管理,那么如何来模拟svn的服务器以及通过更新数据到web服务器中呢???

7.1、BAE云引擎

7.1.1、介绍

百度应用引擎(Baidu App Engine,简称BAE)是百度开发的网络应用开发平台。基于BAE架构,使开发者不需要维护任何服务器,只需要简单地上传应用程序,就可以为用户提供服务。

开发者可以基于BAE平台进行PHP/Java/Node.js/Python等各种应用的,开发、编译、发布、调试。

7.1.2、使用

BAE地址:https://cloud.baidu.com/

操作步骤:https://www.bilibili.com/video/BV13s411h7QM?p=12&spm_id_from=pageDriver

  • 17
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
git-svn 是一个桥接工具,用于在 Git 和 Subversion (SVN) 之间进行转换和交互。下面是 git-svn安装配置过程。 安装 Git: 1. 在官网 (https://git-scm.com/downloads) 上下载适合你操作系统的 Git 安装程序。 2. 打开安装程序并按照指示进行安装。 3. 验证安装是否成功,在命令提示符或终端上运行 "git --version" 命令,如果出现 Git 的版本号信息,则说明安装成功。 配置 Git: 1. 打开命令提示符或终端,并运行以下命令来配置你的 Git 用户名和邮箱: ``` git config --global user.name "你的用户名" git config --global user.email "你的邮箱地址" ``` 安装 Git-svn 桥接工具: 1. 在命令提示符或终端上运行以下命令安装 Git-svn: - 在 Ubuntu 上使用 apt-get: ``` sudo apt-get install git-svn ``` - 在 macOS 上使用 Homebrew: ``` brew install git-svn ``` - 在 Windows使用 Scoop: ``` scoop install git-svn ``` 配置 Git-svn: 1. 在命令提示符或终端上运行以下命令配置 Git-svn: ``` git svn init [SVN 仓库 URL] -s ``` 2. 这将为你的 Git 仓库创建一个指向 SVN 仓库的远程“refs/remotes/origin/trunk”引用。 3. 运行以下命令来下载远程 SVN 仓库的历史记录: ``` git svn fetch ``` 4. 这将下载远程 SVN 仓库的历史记录到你的本地 Git 仓库。 5. 当你想要提交更改时,使用 Git 的命令,例如 "git add"、"git commit"等来管理更改,并使用以下命令将更改推送到 SVN 仓库: ``` git svn dcommit ``` 以上是 git-svn安装配置过程。-git提供了更快速、灵活、分布式的版本控制系统,而git-svn桥接工具则使得想要在 git 和 Subversion (SVN)之间进行转换和交互的用户能够灵活使用两种工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值