zoukankan      html  css  js  c++  java
  • 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:svnwebApp

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

    然后就可以通过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:subversioninsvnserve.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:svninsvn.exe"

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

    SET DIR="D:serverapachehtdocsshop"

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

    svn update %DIR%

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

    然后将里面的内容清空

    将三个命令放进去:

  • 相关阅读:
    oc之数组反序输出示例
    OC--有这么一个 整数 123456789,如何将这个整数的每一位数,从末位开始依次放入数组中,并遍历 倒序输出字符串
    oc--截取字符串(从网址中截取用户名和密码)
    iOS 第七期考核题(字符串以及字典的使用 数组内容转换成字符串)
    iOS 第六期考核题(字典的使用)
    iOS 第五期考核题(字典与数组嵌套,字典的排序/删除)
    Linux服务启动报错日志分析
    新手Linux命令-1
    新手Linux命令-2
    计划任务服务
  • 原文地址:https://www.cnblogs.com/fqh123/p/12814295.html
Copyright © 2011-2022 走看看