一、SVN概述

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

特点:操作简单,入门容易
支持跨平台(Window/Linux/MacOS)
支持版本回退功能(时间机器)

SVN软件属于C/S结构软件(客户端与服务器端)
服务端软件:VisualSVN
网址:http://www.visualsvn.com/
客户端软件:TortoiseSVN
网址:http://tortoisesvn.net/downloads

二、SVN软件安装

1、SVN工作流程

2、服务器端软件安装(VisualSVN)

服务端软件存储于软件/服务器端

1)双击服务端软件安装

2)下一步,继续
3)下一步,继续

4)下一步,继续

5)下一步,继续,安全完成。

三、SVN服务端配置

1、创建一个项目

① 首先在SVN服务器端创建一个公有目录WebApp做为项目目录
② 在WebApp目录下创建Shop文件夹,做为Shop(版本仓库)

③ 创建版本仓库,基本语法:
svnadmin create Shop 文件夹路径(Shop仓库)
如果Shop仓库配置成功,那么Shop文件夹会显示以下目录结构

2、进行服务端监管

Apachehttp://localhost或(ip地址)访问到htdocs目录下的相关文件(监管)
SVNsvn://localhost或(ip地址)访问到相关数据仓库(如Shop仓库)
基本语法:
svnserve -d(后台运行) -r(监管目录) 版本仓库目录
如下图所示:

通过以上指令,我们的svn://localhost或ip地址就可以直接指向Shop版本仓库

3、权限控制

默认情况下,SVN服务器是不允许匿名用户上传文件到服务器端的,所以必须更改系统相关配置文件。
更改第19行代码,去除前面的空格以及#号,更改其值为write(可读写)

四、SVN客户端软件安装与使用

1、获取软件安装包

2、客户端软件安装步骤

① 双击软件运行(TortoiseSVN)

② 同意许可协议,下一步:
③ 选择默认安装即可,下一步:
④ 下一步,Install,系统将会自动安装SVN软件,单击Finish即可。
注:在TortoiseSVN客户端软件安装完毕后,请一定要重启计算机,否则SVN图标是无法显示的。

如果我们鼠标右键出现如下两个图标,代表我们已经安装成功!

⑤ 安装汉化包
双击运行安装语言包,系统将会自动寻找之前TortoiseSVN软件安装目录,并进行自动安装,安装完成后可以进行如下设置:
⑥ 使用客户端软件连接SVN服务器
(Checkout检出)
首先在你的项目目录鼠标右键TortoiseSVN版本库浏览器输出SVN服务器地址:

svn://SVN服务器地址 Shop项目(仓库)
显示隐藏文件
如果出现以上.svn隐藏文件夹,代表检出成功。

五、SVN使用详解(一)

1、回顾SVN三大指令

1)(Checkout)检出操作:
① 链接到SVN服务器端
② 更新服务端数据到本地
注意:Checkout只在第一次链接时操作一次,以后如果进行更新操作请使用Update(更新指令)

2)(Commit)提交操作:
① 提交本地数据到服务器端


以上工作大部分是由项目经理完成的,那么如果公司新来一个程序员(李四),他需要做哪些操作呢?

1)检出操作,效果如下:

2)Commit(提交),效果如下:

以上指令通常是在模块开发完毕后上传

3)项目经理(Update更新操作)

六、SVN使用详解(二)

1、图标集

1)常规图标

含义:当客户端文件与服务器端文件完全同步时,系统会显示以上图标
2)冲突图标

含义:当客户端提交的文件与服务器端数据有冲突,系统会显示以上图标
3)删除图标

含义:当服务端数据已删除,那么客户端该文件将显示以上图标
4)增加图标

含义:当我们编写文档已添加到提交队列,那么系统将自动显示以上图标
5)无版本控制图标

含义:当我们编写的文件没有添加到上传队列,系统将自动显示以上图标
6)修改图标

含义:当客户端文件有修改但未提交,此时将自动显示以上图标
7)只读图标

含义:当客户端文件以只读形式存在时,将自动显示以上图标
8)锁定图标

含义:当服务端数据已锁定,那么客户端文件将自动显示以上图标
9)忽略图标

含义:客户端文件已忽略,不需要进行提交上传,那么将自动显示以上图标

2、忽略功能

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

1)忽略某个指定的文件

2)忽略某类型文件

七、SVN使用详解(三)

1、什么是版本回退

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

2、版本回退功能

① 在项目空白处鼠标右键,采用如下图所示操作

根据日志进行版本回退

根据日志信息选择要回退的状态,效果如下图所示

回退效果如下:

八、SVN使用详解(四)

1、什么是版本冲突

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

2、模拟版本冲突

模拟以上过程,出现如下错误提示:

3、解决之道

1)合理分配项目开发时间
旺财 上午开发
小强 下午开发

2)合理分配项目开发模块
旺财 购物车模块
小强 文章模块

3)通过SVN解决版本冲突问题
① 更新服务器端数据到本地

index.php :整合后的index.php文件
index.php.mine :小强修改后的index.php文件
index.php.r6 :09:00更新时的index.php(起始状态)
index.php.r7 :旺财修改后的index.php文件
② 删除除index.php以外的其他三个文件
③ 修改整合index.php冲突文件
④ 重新提交数据到SVN服务器端,即可解决版本冲突问题

九、配置多仓库与权限控制

1、配置多仓库

在实际项目开发中,我们可能会同时开发多个项目,那么我们如何进行多项目监管呢?
通过svnserve进行仓库监管,但是监管指令只能监管某一个文件夹,而不能同时监管多个仓库。

答:可以通过监管WebApp总目录来达到监管所有仓库的目的

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

① 打开DOS窗口,输入如下指令

svn://localhostip地址来访问D:/svn/WebApp目录
如果需要访问Shop项目、Wechat项目
Shop项目:svn://localhost/Shop
Wechat项目:svn://localhost/Wechat

2、权限控制

如果要使用权限控制有一个前提:必须首先开启权限功能
在每一个仓库中都有一个conf文件夹,里面有三个文件
authz文件:授权文件
告诉哪些用户具有哪些权限

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

默认情况下,以上两个文件都是禁用的,如需要使用,首先要开启以上两个文件
svnserve.conf 配置文件

开启步骤如下:
① 注释匿名用户的可读写权限

② 开启认证文件与授权文件

③ 编写认证文件定义相关用户名与密码

④ 编写授权文件

⑤ 测试

输入admin,admin888超级管理员

十、SVN服务的配置与管理

1、配置自启动服务

sc create SVNService binpath= “D:\subversion\bin\svnserve.exe --service -r D:/svnroot” start= auto
# 模板
sc create 服务名称 binpath=空格”svnserve.exe –service –r D:/svn/WebApp” start=空格auto

创建系统服务,服务名SVNService

① 打开运行,输入cmd指令,打开DOS环境(请使用超级管理员运行)
② 输入一下指令

③ 查看系统服务
控制面板管理工具服务

双击运行,启动SVNService服务

如果运行成功代表开启SVN监管服务。

2、创建批处理文件

启动服务 net start 服务名称
停止服务 net stop 服务名称
删除服务 sc delete 服务名称

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

十一、模拟真实的开发环境

1、SVN工作流程

2、钩子程序

所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化属性的修改。
默认情况下,钩子的子目录(版本仓库/hooks/)中包含各种版本库钩子模板。

post-commit.tmpl :事务完成后所触发的钩子程序
钩子程序默认情况可以采用批处理指令或Shell指令来进行编写

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

① 指令svn服务端工作目录
设置服务器端SVN路径

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

② 指定Web服务器工作目录
设置服务器端项目运行目录

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

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

SVN update %DIR%

4、具体使用步骤

第一步:复制post-commit.tmpl为post-commit.bat文件
第二步:填入相关批处理指令

第三步:在apache目录创建Shop项目并更新SVN服务端数据到本地
第四步:更新文件到SVN服务器端,可以在Shop目录实时获取到最新数据
第五步:可以通过虚拟主机形式直接访问更新文件

SVN黑马程序员笔记相关推荐

  1. PHP自学---黑马程序员笔记【持续更新】

    视频:https://www.bilibili.com/video/BV18x411H7qD?p=3 目录 基础 1.静态网站访问原理: 2.动态网站访问 3.C/S.B/S 4.MySQL访问流程 ...

  2. Python 黑马程序员 笔记

    目录 计算机组成 什么是计算机? 计算机是由什么组成的? 1. 硬件系统: 2. 软件系统: 3. 计算机是如何处理程序的? 4. 编程语言是什么? 5. 什么是Python? # 计算机组成原理和P ...

  3. Linux网络编程——黑马程序员笔记

    01P-复习-Linux网络编程 02P-信号量生产者复习 03P-协议 协议: 一组规则. 04P-7层模型和4层模型及代表协议 分层模型结构: OSI七层模型: 物.数.网.传.会.表.应TCP/ ...

  4. 【JAVA黑马程序员笔记】四 P314到P384(特殊流、多线程编程、网络编程模块、lambda表达式、接口组成更新、方法引用、函数式接口)

    P314-315 字节/符打印流 PrintStream ps = new PrintStream("test.txt");//使用字节输出流的方法ps.write(97);// ...

  5. 一、多线程20(黑马程序员笔记-自用)

    文章目录 1.实现多线程 1.1进程和线程[理解] 1.2实现多线程方式一:继承Thread类[应用] 1.3设置和获取线程名称[应用] 1.4线程优先级[应用] 1.5线程控制[应用] 1.6线程的 ...

  6. Git基础学习(黑马程序员笔记)

    Git介绍 Git是目前世界上最先进的分布式版本控制系统 Git安装 官网 Git与Github 两者区别 Git是一个分布式版本库控制系统,简单的说就是一个软件,用于记录一个或若干文件内容变化,以便 ...

  7. 【JAVA黑马程序员笔记】三P233-P312(List、Set、比较器、泛型、Map、File、IO流...)

    P233 数据结构 栈:数据进入栈模型叫做压栈,数据离开栈模型为弹栈.栈是后进先出的模型. 队列:数据从后端进入队列模型的过程叫做入队列,离开队列的过程叫出队列.队列是先进先出的模型. 数组:查询数组 ...

  8. python3入门与进阶笔记_16_变量进阶 — 黑马程序员《Python入门教程完整版》笔记...

    变量进阶(理解) - 黑马程序员<Python入门教程完整版>笔记 目标变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用变量 和 数据 都是保存在 内存 中的 在 Py ...

  9. 【168天】黑马程序员27天视频学习笔记【Day07】

    [168天]黑马程序员27天视频学习笔记[Day07] 叨逼叨两句 决定了,我会记住这一天! 07-01:构造方法Constructor概述和格式 构造方法概述和作用 给对象的数据(属性)进行初始化. ...

最新文章

  1. form 表单提交,防止重复提交,加token
  2. linux中挂载系统光盘,linux下挂载光盘
  3. JAVA语法基础 动手动脑及课后作业
  4. aws s3 python_Python 操作amazon s3 | 学步园
  5. 各种乐器与人声的频率特性说明
  6. jQuery中的gt和lt
  7. 带你一起来理解:函数去抖(debounce)和 函数节流(throttle)的作用和区别
  8. java zookeeper 主从热备_zookeeper 学习
  9. 混合动力hev汽车控制模型 simulink stateflow搭建 电机 电池 发动机 模型 动力分配 能量控制策略 及 经济性仿真测试。
  10. 朗兰兹纲领:关于数学大一统的伟大构想
  11. 阿里巴巴对工业互联网志在必得,阿里云如何啃硬骨头?
  12. AtomicInteger类下的incrementAndGet
  13. 安卓电子市场_五款安卓工具神器
  14. xshell 的快捷键 复制是 Ctrl+Insert,粘贴是 ShIft+Insert。刚才发现可以设置成 ctrl+C 和 ctrl+V
  15. 微信小程序routeDone错误问题
  16. 存储在icloud云盘文件夹顶层_iCloud云盘文件夹共享功能使用方法
  17. 机器学习流程错误分析
  18. winows显示IP主机名bat
  19. 相当不错的清晖项目管理公开课
  20. Oracle开发者性能课第6课(如何创建物化视图)实验

热门文章

  1. 天猫商城在线购物系统
  2. 通过智能一体化管理系统自定义表单和自定义字段设计
  3. telnet出现端口23连接失败解决办法
  4. 数据科学家必备的5种离群点/异常检测方法
  5. 非线性优化汇总——Matlab优化工具箱(持续更新中)
  6. Threejs渲染obj+mtl模型源码,3D工厂模型
  7. 使用html2canvas生成海报
  8. 华为OD机试 - 最短耗时(C++) | 附带编码思路 【2023】
  9. 区块链游戏 对战游戏NFT游戏模式开发方案
  10. [linux虚拟机] 使用yum命令时,解析不了yum源,Cannot find a valid baseurl for repo: base/7/x86_6