zoukankan      html  css  js  c++  java
  • day36_Spring学习笔记_04_SVN

    一、SVN

    1.1、版本控制

    1.1.1、什么版本控制?

    • 版本控制(Revision Control):是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。也是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。
    • 为什么学习版本控制?硬盘是否坏过。根据经验法则再加上墨菲定理,坏事情往往都发生在最重要的时刻。
    • 通过文档控制(documentation control),能记录任何工程专案内各个模组的改动历程,并为每次改动编上序号。

    1.1.2、版本控制软件

    • CVS(Concurrent Versions System)代表协作版本系统或者并发版本系统,是一种版本控制系统,方便软件的开发和使用者协同工作。
    • VSS(Visual Source Safe)只能在windows下,作为 Microsoft Visual Studio 的一名成员,它主要任务就是负责项目文件的管理。
    • Git是用于Linux内核开发的版本控制工具。它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux kernel这样的大项目来说自然很重要。Git最为出色的是它的合并跟踪(merge tracing)能力。
    • SVN(Subversion),是一个开放源代码的版本控制系统,采用了分支管理系统,它的设计目标就是取代CVS。

    1.2、SVN的特点

    • 统一的版本号。CVS是对每个文件顺序编排版本号,在某一时间各文件的版本号各不相同。而Subversion下,任何一次提交都会对所有文件增加到同一个新版本号,即使是提交并不涉及的文件。所以,各文件在某任意时间的版本号是相同的。版本号相同的文件构成软件的一个版本。
    • 原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。
    • 重命名、复制、删除文件等动作都保存在版本历史记录当中。
    • 对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)
    • 目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。
    • 分支的开销非常小。
    • 优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。
    • 支持元数据(Metadata)管理。每个目录或文件都可以定义属性(Property),它是一些隐藏的键值对,用户可以自定义属性内容,而且属性和文件内容一样在版本控制范围内。
    • 支持 FSFS 和 Berkeley DB两种资料库格式。
    • 不足:只能设置目录的访问权限,无法设置单个文件的访问权限。

    1.3、SVN的体系结构

    1.4、安装SVN

    • 版本

      我一般喜欢安装最新版本的软件。
    • 测试安装
    • 检查path系统环境变量

    1.5、创建仓库

    • 命令格式:svnadmin create 路径
    • 仓库目录结构
    • 注意:创建仓库时,目录必须是空的,即要新建文件夹

    1.6、SVN服务器启动

    • 命令格式:svnserve -d -r 仓库的路径
      -d 后台执行
      -r 版本库的根目录
      SVN服务器启动时,指定“仓库路径”不同,就会分成多仓库单仓库
    • 多仓库【掌握】

      启动:svnserve -d -r 仓库父目录,表示启动的是多仓库
      例如:svnserve -d -r D:learnJavaWeb epositorysvn
      访问:svn://localhost:3690/bbs
    • 单仓库【了解】

      启动:svnserve -d -r 仓库的根,表示启动的是单仓库
      例如:svnserve -d -r D:learnJavaWeb epositorysvnbs
      访问:svn://localhost:3690
    • 每次启动SVN服务器都要输入很多命令,太麻烦了,有没有解决办法?
    • 有,我们可以将操作注册成操作系统的“服务”,我们的电脑开机时SVN服务器就启动了。
      • 1、在“运行”中输入 services.msc 打开“服务”
      • 2、注册“服务”
        前提:必须以管理员身份打开命令提示符。
        命令格式:sc create svn binpath= "D:learnJavaWebSubversionSubversioninsvnserve.exe --service -r D:learnJavaWeb epositorysvn" displayname= "SVN-Service" start= auto depend= Tcpip
      • 3、删除“服务”
        命令格式:sc delete svn
      • 4、将SVN-Service的启动类型设置为`手动`后,就可以手动启动或停止“服务”了

        测试手动开启SVN和手动停止SVN:

    1.7、操作【掌握:思想】

    1.7.1、checkout

    • 命令格式:svn checkout 服务器地址 下载地址

    1.7.2、commit

    • 命令格式:svn commit 资源
      问题1:尚未纳入版本控制

      解决办法:使用add子命令,将要提交的文件添加到本地版本库

      再次提交
      问题2:没有编写日志

      解决办法:采用 -m 参数设置日志信息

      问题3:没有权限,认证失败

      解决办法:修改权限,设置匿名访问
      先打开文件:D:learnJavaWeb epositorysvnbsconfsvnserve.conf

      再次提交,没有问题了

    1.7.3、update

    • 再次更新:
    • 命令格式:svn update

    1.8、图形化:TortoiseSVN 安装

    • 安装包文件:
    • 安装成功之后,以后所有的操作都是“右键”
    • 若在TortoiseSVN的简单使用中若出现如下警告,说明SVN服务器是关闭的,需要我们手动打开SVN服务器(因为我们设置的是手动启动和关闭SVN服务器):
      警告如下:

      命令格式:net start svn

      解决问题成功截图:

    1.9、svn权限

    • 先找到仓库,配置SVN权限需要3个配置文件,位置:D:learnJavaWeb epositorysvnbsconf
    • 核心配置文件:svnserve.conf
      关闭匿名访问,开启权限认证

      确定账号配置文件位置

      确定权限认证配置文件位置
    • 账号配置文件:passwd(一行表示一个账号,账号由用户名和密码组成,使用等号分隔)
    • 权限认证配置文件:authz
      配置组,配置格式:组名 = 用户1, 用户2, …

    权限认证细节配置

    多仓库
        [bbs:/]         --> 确定仓库名称。[bbs:/doc]    表示给bbs仓库的doc目录配置权限认证
        @itheima = rw   --> 给itheima组设置权限,取值:read ('r') ,read-write ('rw') ,or no access ('')
        user3 = r       --> 给user3 指定权限
        *=              --> 其他用户没有权限
    单仓库
        [/]             --> 表示单仓库的根。[/doc]  表示单仓库中的doc目录

    1.10、TortoiseSVN 常见图标

    1.11、myeclipse svn 插件【很重要】

    1.11.1、安装插件

    • myeclipse svn 插件位置
    • 如果3个都不能使用,直接换eclipse。
    • 安装方式1:直接复制

    eclipse 插件规范示例:

    eclipse 目录
      --- features目录
      --- plugins 目录

    • 安装方式2:使用link文件

    详解如下:

    将插件解压到任意目录(不含中文、空格),在MyEclipseMyEclipse 2017 CIdropins目录添加一个link文件
        文件名:自定义
        文件扩展名:link
        文件内容:
            path = 插件完整目录,需要指定到eclipse,即可以看到(features、plugins)这两个目录
            例如:
                path = D:\learn\Java\MyEclipse\MyEclipse 2017 CI\dropins\svn\eclipse  或者
                path = D:/learn/Java/MyEclipse/MyEclipse 2017 CI/dropins/svn/eclipse
    • 安装方式3:在线安装
      在MyEcplise中点击Help --> Install from Site… --> Add… --> Location --> Next 等等
    • 安装成功标志

    1.11.2、myeclipse svn插件使用

    1.12、svn 目录规范

    • svn 目录规范
    • trunk ,主线:用于存放程序整个进度
    • branches ,分支,例如:bug修复、特殊功能等
    • tags ,标签(版本),此目录下的内容不能修改
    • 软件开发小图解示例:
  • 相关阅读:
    Treap 树堆 容易实现的平衡树
    (转)Maven实战(二)构建简单Maven项目
    (转)Maven实战(一)安装与配置
    根据请求头跳转判断Android&iOS
    (转)苹果消息推送服务器 php 证书生成
    (转)How to renew your Apple Push Notification Push SSL Certificate
    (转)How to build an Apple Push Notification provider server (tutorial)
    (转)pem, cer, p12 and the pains of iOS Push Notifications encryption
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 2/2
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 1/2
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9459401.html
Copyright © 2011-2022 走看看