首页 > 其他分享 >SVN 学习

SVN 学习

时间:2023-09-23 18:00:57浏览次数:41  
标签:SVN svn 服务器端 文件 代码 学习 版本

SVN

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

SVN属于C/S结构软件,分为客户端和服务器端

服务端软件:VisualSVN

网址:https://www.visualsvn.com/

客户端软件:Tortoisesvn

网址:https://tortoisesvn.net/downloads.html

指令介绍

Checkout(检出)

第一次与svn服务器联系,并把项目更新到本地

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

注意Checkout只在第一次时才使用,其余若要更新数据则使用Update

Update(更新)

更新svn服务器代码到本地

Commit(提交/上传)

把代码上传到服务器

  • 提交本地数据到服务器端

具体工作流程

 

软件安装

服务端软件安装(VisualSVN)

配置8443端口号、仓库等设置后进行安装

SVN服务端配置

  1. 创建一个项目

    1. 首先在SVN服务端创建一个公有目录WebApp作为项目目录

    2. 在WebApp目录下创建Shop文件夹,作为Shop(版本仓库)

    3. 创建版本仓库,基本语法(DOS环境):

      截图:

        复制代码:svnadmin create 项目名 文件夹路径



  Shop 仓库目录结构

  

 

2.进行服务端监管

客户端输入svn://localhost(或ip地址)可以访问到相关数据仓库(如示例的Shop仓库)

要想要客户端能访问到数据仓库,需要服务端启用该仓库的监管服务

截图:

 

复制代码:svnserve -d -r 服务端的版本仓库目录  

-d 在后台运行

-r 监管目录

 

3.权限控制

默认情况下,svn服务器是不允许匿名用户上传文件到服务器端的,要更改项目的相关配置文件。

截图:   复制代码:
anon-access = write
# auth-access = write
让auth-access属性值为write,使该仓库可读可写    

SVN客户端软件安装与使用

安装完成后

  1. 在客户端目标文件夹下右击checkout
  2. 在弹出的窗口中输入svn://服务器地址(也可以在URL of repository右面的目录中检查),点击OK
  3. 如果当前文件夹下出现.svn/的隐藏文件夹,说明客户端已经和服务器端建立起了联系

项目经理创建项目

在有文件需要提交时,在当前文件夹下右击选择SVN Commit

  1. 进入窗口后填写备注信息,选择需要上传的文件,然后点OK提交

     

  2. 出现以下界面,说明提交成功

     

 

程序员编写项目

以上工作大部分是由项目经理完成的,程序员需要完成另外的操作

  1. 在文件夹下右击进行检出操作

 

  1. 如果有新文件要提交,直接右击Commit(需要填写备注信息和勾选文件)

    一般以上指令是在模块开发完毕后上传

 

项目经理检查进度

  1. 需要使用Update指令

    一般直接右击Update直接更新文件,系统会直接更新到最新版本

 

其他使用详解

文件图标

右击---》 TortoiseSVN--》setting--》 Icon Overlays--》 Icon Set

  1.   1575085612459.png

常规图标:当客户端文件与服务器端文件完全同步

  1.   1575085684229.png

冲突突变:当客户端提交的文件与服务器端数据有冲突

  1.   1575085853062.png

删除图标:当服务器端数据已删除

  1.   1575085853062.png

增加图标:当我们编写的文件已添加到提交队列

  1.   1575086033381.png

无版本控制图标:当我们编写的文件没有添加到上传队列

  1.   1575086122515.png

修改图标:当客户端文件有修改但未提交

  1.   1575086175637.png

只读图标:当客户端文件以只读形式存在时

  1.   1575086222373.png

锁定图标:当服务器端数据已锁定

  1.   1575086279764.png

忽略图标:客户端文件已忽略,不需要进行上传


 

忽略文件

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

右击文件--》 TortoiseSVN--》 Add to ignore list--》 选择忽略的方式(忽略某个文件或某个类型的文件)

版本管理

版本回退

文件夹空白处右击TortoiseSVN--》 Update to revision...--》

 

一般根据日志进行版本回退

 

 

解决版本冲突

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

 

解决方法

  1. 合理分配项目开发时间

  2. 合理分配项目开发模块

  3. 通过svn解决版本冲突问题

    1. 更新服务器端数据到本地(出现冲突后)

       

       复制代码:

        直接Update
      
        冲突文件会出现其他的副本文件

       

          

      

 

        hello.java:整合后的hello.java文件

​        hello.java.mine:冲突当事人修改后的hello.java文件

​        hello.java.rx:代表x版本的文件,版本号低的一般代表起始状态,版本号高的是其他人修改文件后的版本

  1. 删除除hello.java以外的其他三个文件
  2. 修改整合hello.java文件
  3. 重新提交解决冲突

 

配置多仓库与权限控制

配置多仓库

在实际项目开发中,我们可能会同时开发多个项目,那么我们如何进行多项目监管呢?

如果通过svnserve进行仓库监管,但是监管指令只能同时监管某一个文件夹,而不能同时监管多个仓库。

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

 复制代码:

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

此时svn://localhost或ip地址 是来访问WebApp目录的,如果需要访问里面的Shop项目或者Wechat项目

Shop项目:svn://localhost/Shop

Webchat项目:svn://localhost/Wechat

权限控制

如果要使用权限控制功能,要有一个前提:必须首先开启权限功能,在每一个仓库中都有一个conf文件夹,里面有四个文件,其中

authz文件为授权文件,告诉哪些用户具有哪些权限

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

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

开启步骤:

  1. 注释匿名用户的可读可写权限

    给anon-access加上注释

 复制代码:

### users have read and write access to the repository.
# anon-access = write
# auth-access = write


2. 开启认证文件与授权文件

取消两个注释

 复制代码:

password-db = passwd  #一般在27行
authz-db = authz  #一般在36行



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

打开passwd文件,等号左边为用户名,右边为密码

 复制代码:

[users]
# harry = harryssecret
# sally = sallyssecret

admin = admin888
itcast = 123456

 

4.编写授权文件

打开authz文件

groups为用户分组

 复制代码:

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
# 组名 = 组员(组员间用“,”隔开)
admin = admin
itcast = itcast

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[Shop:/] #Shop为项目文件夹名
@admin = rw #r为可读,w为可写
@itcast = r
* = r #代表匿名用户



5.测试

  如果* = r时,所有用户都能Checkout到项目,但当要提交修改时,会出现用户验证

 

此时可以输入管理员账号admin admin888,或者普通员工账号itcast 123456

     

SVN服务的配置与管理

  1. 配置服务的自动启动服务(开机自启)

    Window系统

    创建系统服务

    sc create 服务名称 binpath= "服务的可执行文件 --service -r WebApp的路径"start= auto(binpath=和start=后面都要带上一个空格)

 复制代码: sc create SVNService binpath= "svnservice安装目录\bin\svnserve.exe --service -r WebApp的路径" start= auto

 

2.配置批处理文件

Window系统(SVNService为服务名称)

  1. 创建stop.bat文件

     复制代码:net stop SVNService

  2. start.bat文件

     复制代码:net start SVNService

  3. delete.bat文件

      复制代码:sc delete SVNService

       

    实际开发模拟

     

    通过钩子程序,让svn服务器上的程序同步到web服务器

    钩子程序

    所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化属性的修改

    默认情况下,钩子的子目录(版本仓库/hooks)中包含各种版本库钩子的模板

     

    post-commit.tmpl:事务完成后所触发的钩子程序

    钩子程序默认情况可以采用批处理指令或Shell指令来进行编写

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

    1. 指定svn服务器工作目录

       复制代码:SET SVN="SVNService的安装目录\bin\svn.exe"

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

       复制代码: SET DIR="服务器端目录"

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

       复制代码:SVN update %DIR%

    4. 编写post-commit.bat文件(文件放在hooks文件夹内)

       复制代码:

      SET SVN="SVNService的安装目录\bin\svn.exe"
      SET DIR="服务器端目录"
      SVN update %DIR%
      
         
    5.  使用步骤
      1. 在服务器目录下通过svn服务更新项目
      2. 有人更新文件到svn服务器上,服务器上的文件也会更新
       


   

作者:核动力挖掘机
链接:https://www.jianshu.com/p/d593ec12ea65
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:SVN,svn,服务器端,文件,代码,学习,版本
From: https://www.cnblogs.com/weibo806/p/17724826.html

相关文章

  • 第一天MarkDown学习
    MarkDown学习标题标题#空格+表题名字一级表题两个#加空格二级标题三个#加空格三级标题四个#四级标题最多只有六级标题 字体hello两边加两个**变成粗体hello两边加一个*变成斜体hello三个*斜体加粗hello两边加两个波浪号引用">"加空格分割线“......
  • crash工具学习 —— percpu相关的一些用法
    作者[email protected]查看percpu变量在每个cpu上的基地址crash>kmem-oPER-CPUOFFSETVALUES:CPU0:ffff88807f600000CPU1:ffff88807fa00000CPU2:ffff88813d600000CPU3:ffff88813da00000CPU4:ffff8881bd600000CPU5:ffff8881bda00000C......
  • Hive学习2(hive部署启动,DataGrip连接hiveserver2)
    1.Hive部署:hive部署:09-Apachehive安装部署--与Hadoop整合、MySQL安装_哔哩哔哩_bilibili 10-Apachehive安装部署--配置文件修改编辑_哔哩哔哩_bilibili2.Hive启动hadoop启动后。node1上:nohup/export/server/apache-hive-3.1.2-bin/bin/hive--servicemetastore&noh......
  • 《Unix/Linux系统编程》教材学习笔记第十章
    chapter10sh编程sh脚本包含sh语句的文本文件,命令解释程序sh要执行该语句。eg.mysh.sh#!/bin/bash#commentlineechohello使用chmod+xmysh可以执行该文件。#!开头一般称为shebang,若未指定,则将运行默认sh,即Linux中的/bin/bash。sh脚本与C程序比较不难看出两者有......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第三周学习笔记
     202113252023-2024-1《信息安全系统设计与实现(上)》第三周学习笔记一、任务要求自学教材第10章,提交学习笔记(10分)大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?,评分标准如下1.知识点......
  • SVN服务器安装与常用操作(超详细)
    SVN服务器安装与常用操作(超详细)服务器1、下载SVN服务器,地址:http://subversion.apache.org/packages.html进入网址后,滚动到浏览器最底部看到如下截图:  点击,下载 2、在服务器把下载的VisualSVNserver双击安装,文件名:(VisualSVN-Server-4.3.3-x64.msi) 3、点击Next 选择......
  • 深度学习算法中的参数共享(Parameter Sharing)
    引言在深度学习算法中,参数共享(ParameterSharing)是一种重要的技术,它通过共享模型的参数来减少模型的复杂度,并提升模型的性能和泛化能力。本文将介绍参数共享的概念、原理以及在深度学习算法中的应用。参数共享的概念参数共享指的是在模型的不同部分使用相同的参数。在传统的机器学......
  • JS深入学习笔记 - 第三章.变量作用域与内存
    1.原始值和引用值ECMScript变量包含两种不同类型是数据:原始值和引用值。原始值:最简单的数据。有6中原始值:Undefined、Null、Boolean、Number、String和Symbol。原始值是按值访问。引用值:由多个值构成的对象。三大引用类型:1.object2.Array类型3.Function类型。引用值是保存在......
  • TorchAudio 2.0.1学习
    对于函数而言,在将张量参数传递给函数之前,请将其移到CUDA设备上。例如:cuda=torch.device("cuda")waveform=waveform.to(cuda)spectrogram=torchaudio.functional.spectrogram(waveform)支持CUDA的类是通过torch.nn.Module()实现的。在传递CUDA张量之前,也需要将实例移动......
  • 拉格朗日插值 学习笔记
    拉格朗日插值学习笔记前言模拟赛考了,我不会,故学之。真的好抽象……背景众所周知,用\(n\)个点可以确定一个\(n-1\)次的多项式,那么应该如何确定呢?我们不妨考虑这样一个题目(其实就是洛谷模板题):给定\(n\)个点\((x,y)\),要求确定\(f(x)\)。当然,直接求出系数可能比较困难,......