SVN学习笔记&Git与SVN对比

Git与SVN对比

一、版本控制器的作用

  1. 协同开发
  2. 多版本控制,版本回退
  3. 问题定位排查

二、常见版本控制器

  1. 分布式版本控制工具:git
  2. 集中式版本控制工具:SVN

三、git与SVN的区别

  1. git是分布式的,svn是集中式的
    1. git分布式模式,客户端完整备份。大部分操作在本地完成,不需要联网
    2. svn是集中式的,需要联网操作
  2. git内容按原数据方式存储,而svn是按文件
    1. git每一次提交都存储快照:保存变化文件的快照,没有变化的文件只保存之前快照的索引
    2. svn存储文件差异:基于差异的版本控制,存储每个文件与初始版本的差异
  3. git完整性更高
  4. svn分支切换代价大
  5. svn有全局版本号

SVN笔记

一、SVN概述

  1. 为什么使用
    1. 协作开发、远程开发、多版本控制
  2. 解决之道
    1. SCM:软件管理配置(对软件源代码进行控制与管理)
    2. 产品:
      1. CVS:元老级产品
      2. VSS:入门级产品
      3. ClearCase:IBM公司提供技术支持
      4. SVN:主流产品
  3. 什么是SVN
    1. 介绍:
      1. SVN全称SubVersion,是近年来崛起的版本管理工具,是CVS的接班人。目前,很多公司都在使用SVN作为代码版本管理软件
    2. 特点:
      1. 操作简单,入门容易
      2. 支持跨平台操作(Windows、Linux、MacOS)
      3. 支持版本回退功能(时间机器)
  4. 获取SVN软件
    1. 属于C/S结构软件(客户端与服务端)
    2. 服务器端:VisualSVN(https://www.visualsvn.com/
    3. 客户端:Tortoisesvn(https://tortoisesvn.net/downloads.html

二、SVN软件安装

  1. SVN工作流程image.png
  2. 服务端软件安装(VisualSVN)
    1. 服务端软件存储与软件/服务器端

image.png

  1. 安装
    1. 双击安装
    2. 下一步,继续image.png
    3. 下一步,继续image.png
    4. 下一步,继续image.png
    5. 下一步,继续image.png
    6. 下一步,继续,安装完成

三、SVN服务器端配置

  1. 创建一个项目
    1. 首先在SVN服务器端创建一个共有目录WebApp作为项目目录
    2. 在WebA目录下创建Shop文件夹,作为Shop(版本仓库)image.png
    3. 创建版本仓库,基本语法:

svnadmin create Shop文件夹路径(Shop仓库)
svnadmin create G:/svn/WebApp/Shop

  1. 创建成功,显示如下目录结构

image.png

  1. 文件目录
    1. conf:项目配置文件
    2. db:项目数据
    3. hooks:钩子文件(同步复制、同步更新)
    4. locks:追踪目录
    5. format:版本仓库层次结构
    6. README.txt:说明文件
  2. 进行服务端监管
    1. Apache http://localhost或(ip地址)访问到htdocs目录下的相关文件(监管)
    2. SVN svn://localhost或(ip地址)访问到相关数据仓库(如Shop仓库)
    3. 基本语法:

svnserve -d(后台运行) -r(监管目录) 版本仓库目录
svnserve -d -r G:/svn/WebApp/Shop

  1. 通过以上指令,我们的svn://localhost或ip地址就可以直接只想Shop版本仓库
  2. 权限控制
    1. 默认请款修改,SVN服务器是不允许匿名用户上传文件到服务器端的,所以必须更改系统相关配置文件。image.png

image.png

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

  1. 获取软件安装包
  2. 重启
  3. 安装汉化包:SVN安装汉化包
  4. 使用客户端连接SVN服务器(Checkout检出)
    1. 首先在项目目录鼠标右键TortoiseSVN版本库浏览器输出SVN服务器地址image.png
    2. 右键检出image.png

五、SVN使用详解(三大指令)

  1. 回顾SVN三大指令
    1. Checkout检出
      1. 连接到SVN服务器端
      2. 更新服务器端数据到本地
      3. 注意:Checkout只有在第一次链接时操作一次,以后如果进行更新操作请使用Update更新指令
    2. Commit提交
      1. 提交本地数据到服务器端image.pngimage.pngimage.png
    3. Update更新image.png

六、SVN使用详解(图表集+忽略)

  1. 图表集
    1. 常规图标:当客户端与服务器端文件完全同步时,系统会显示以上图标image.png
    2. 冲突图标:当客户端提交的文件与服务器数据有冲突,系统会显示以上图标image.png
    3. 删除图标:当服务端数据已删除,那么客户端该文件将显示以上图标image.png
    4. 增加图标:当我们编写文档已提交到提交队列,那么系统会自动显示以上图表image.png
    5. 无版本控制图标:当我们编写的文件没有添加到上传队列,系统将自动显示以上图标image.png
    6. 修改图标:当客户端文件有修改但未提交,此时将自动显示以上图标image.png
    7. 只读图标:当服务端数据已锁定,吗那么客户端文件见自动显示以上图标image.png
  2. 忽略功能
    1. 将不需要进行版本控制的文件添加至忽略列表
    2. 忽略某个指定文件image.png
    3. 忽略某类型文件image.png

七、SVN使用详解(版本回退)

  1. 什么是版本回退
    1. 有些时候,软件的运行可能使开发者或使用者不满意,这时我们需要把当前版本退回到以前的某个版本image.png
  2. 版本回退功能
    1. 项目空白区域点击鼠标右键image.png
    2. 根据日志进行版本回退image.pngimage.png

八、SVN使用详解(版本冲突)

  1. 什么是版本冲突
    1. 在实际项目开发中,如果两个人同时修改某个文件就会产生版本冲突问题
  2. 模拟版本冲突image.pngimage.png
  3. 解决冲突
    1. 更新服务器端数据到本地image.png
      1. index.php:整合后的index.php文件
      2. index.php.mine:本人修改的index.php文件
      3. index.php.r6:本地修改前的起始状态
      4. index.php.r7:别人修改后的文件
    2. 删除除index.php以外的其他三个文件
    3. 修改整合index.php冲突文件
    4. 重新提交数据到SVN服务器,即可解决版本冲突问题

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

  1. 配置多仓库
    1. 在实际项目开发中,我们可能会同时开发多个项目,如何同时监管多个仓库

svnserve -d -r WebApp(项目总目录)
svnserve -d -r G:/svn/WebApp

  1. svn://localhost或ip地址访问G://svn/WebApp目录
  2. Shop项目:svn://localhost/Shop
  3. Wechat项目:svn://localhost/Wechat
  4. 权限控制
    1. 如果想要使用权限空值有一个前提:必须首先开启权限功能在每一个仓库中都以一个conf文件夹,里面有三个文件
      1. authz文件:授权文件
        1. 告诉那些用户具有哪些权限
      2. passwd文件:认证文件
        1. 标识当前svn系统中某个仓库具有哪些用户以及相应的密码
      3. ssnserver.conf:配置文件
        1. 默认情况下,以上两个文件都是禁用的,如需要使用,首先要开启以上两个文件
    2. 开启步骤
      1. 注释匿名用户的可读写权限image.png
      2. 开启认证文件与授权文件image.png
      3. 编写认证文件定义相关用户名与密码image.png
      4. 编写授权文件image.pngimage.png
      5. 测试:输入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

  1. 创建系统服务,服务名SVNService
    1. 打开运行,输入cmd指令,打开DOS环境(使用管理员运行)
    2. 输入指令image.png
    3. 查看系统服务
      1. 控制面板管理工具服务image.png
      2. 启动服务image.png
      3. 运行成功代表开启SVN监管服务
  2. 创建批处理文件
    1. 启动服务:net start 服务名称
    2. 停止服务:net stop 服务名称
    3. 删除服务:sc delete 服务名称
    4. 以上功能在实际详谬开发中经常使用,所以可以封装为.bat批处理文件,效果如下:image.png

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

  1. SVN工作流程image.png
  2. 钩子程序
    1. 所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是位版本化属性的修改。
    2. 默认情况下,钩子的目录(版本仓库/hooks)中包含各种版本库钩子模板。image.png
    3. post-commit.tmpl:事务完成后所触发的钩子程序
    4. 钩子程序默认情况可以采用批处理指令或Shell指令来进行编写
  3. 通过批处理指令编写钩子程序

#指定svn服务端工作目录,设置服务器端SVN路径
SET SVN="D:\svn\bin\svn.exe“
#指定Web服务器工作目录,设置服务器端项目运行目录
SET DIR=“D:\server\apache\htdocs\shop”
#通过update指令实时更新数据到DIR目录中
SVN update %DIR%

  1. 具体使用步骤
    1. 创建post-commit.bat文件
    2. 写入上述指令
    3. 在apache目录创建Shop项目病根小棍SVN服务端数据到本地
    4. 更新文件到SVN服务器端,可以在Shop目录实时获取到最新数据
    5. 可以通过虚拟主机形式直接访问更新文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值