版本控制工具:svn

本文详细介绍了Subversion(SVN)的安装、常用命令以及配置管理,包括版本库创建、权限设置、客户端操作如检出、提交、更新等,并涉及到代码冲突的解决和多版本库管理策略。此外,还提到了版本库的备份与恢复方法以及钩子(hooks)的应用。
摘要由CSDN通过智能技术生成

在这里插入图片描述

svn/subversion 集中式版本控制

1.安装

linux
  yum -y install subversion    #内置客户端与服务端

2.命令
服务端

(补充术语:版本库=线上版本库  工作副本=已加入版本控制的本地库)
服务器端命令:
  svnadmin create /path/repos  创建版本库,可以追加相对路径或者绝对路径
    --fs-type   后可追加存储格式选项
      fsfs	常用格式
      dbd
rm   -rvf  /path/repos  删除版本库
svnserve -d -r /svnroot/imooc   运行次版本库
  --listen-port  指定端口

版本库配置及权限管理:
/path/repos/conf/  配置文件位置

  passwd  配置用户名和密码
    user1 = passwd1
    user2 = passwd2
    
  svnserve.conf  配置默认权限、权限配置文件及密码配置文件位置
    anon-access = read/write/none 未经认证用户默认权限
    auth-access =  read/write/none  已认证用户默认权限
    password-db = passwd    passwd文件路径
    authz-db = authz  auth文件路径
    
  auth  配置用户组以及用户组权限	 
    [aliases]  别名 一般不用
		
    [groups]  	用户组   
	  pm = user1
	  dev = user1,user2

	[/]  表示版本库的根目录,多个版本库的auth可以同时指向一个
	@pm = rw			如果是组前缀需要加@
	@dev = r
  	user3 = rw
  	[imooc:/] 表示名为imooc的版本库跟目录
  	@pm = rw
  	user1 = r
  	user2 =	  表示无权限
  	* = r	  *表示所有用户	

客户端命令

Linux:
  mkdir svntest	  && cd svntest	创建一个存放目录
svn 
  co/checkout   svn://192.168.0.1   检出并更新版本库,目录包含.svn隐藏文件夹用来记录工作副本的一切变化,在版本控制之下
    --username  NAME
    --password  PASSWD   
    -r  2	检出版本2
    后面可以不追加用户密码,但是需要输入一下所使用的的系统用户密码
  export   导出,用法与checkout相同,导出目录下无.svn隐藏文件夹,不在版本控制之下 
  add  添加到版本控制
    --non-recursive 不递归增加
    *  表示所以文件
    force  强制执行 
  ci/commit  提交修改到服务端(创建一个新版本号)	
    -m ""  提交备注,必须要加的选项
    --no-unlock 提交文件后不自动解锁
  up/update  全目录更新到最新版本
    -r 1  标识更新到版本1
    *  强制所有副本更新到最新版本
  del/delete/rm/remove    从版本库中删除文件或目录
    -m ""  备注,可不加
    然后需要执行提交操作,相当于版本变化
  diff/di 版本库与本地库差异比较
    -r 2 表示本地库与版本号为2的版本库进行差异比较
    -r 1:3 表示版本库版本为1跟版本为3的内容进行差异比较
    - 前缀表示版本库中最新版本内容
    + 表示本地库内容
    如果有差异会把版本库与本地库都表示出来

在这里插入图片描述
在这里插入图片描述

  mkdir  创建目录并直接加入到版本控制中
  cat 不检测工作副本的情况下直接查看指定文件
    例:svn cat svn://192.168.0.130/index.html
  revert  FILENAME|*  还原本地工作副本最后一次更新的状态(与reset回滚不同,revert会提取你指定的版本并再次提交)
    --recursive  递归还原
  lock  锁定文件,防止其他人员对文件进行提交,当自己进行提交后文件会自动解锁
  unlock
  list/ls  列出当前目录下处于版本控制的所有文件
    --recursive  递归
    -v  详情,依次显示最后一次提交的版本、用户、大小、时间
  status  列出工作副本中的文件(夹)的最后一次被改动后的状态
    标记代表的状态:
      ?  无版本控制
      D  已被标记从版本库中删除
      M  已被编辑过
      A  已被标记增加到版本控制中
      R  文件被替换
      C  文件存在冲突
      !  文件缺失
  log  查看提交日志(来自svn ci的-m参数)
  info  工作副本及文件(夹)的详细信息
    --xml  以xml格式输出
  copy/cp  复制文件或目录并加入到版本库中,可复制多个
    -r  指定版本
    
    示例:
      svn cp  -r 4 index.html  copy.html  指定版本复制
      svn cp index.html copy.html ./temp 多个复制
      svn cp index.html svn://192.168.10.1/imooc/target.html -m " " 跳过版本库直接加到线上版本库中,不能跨库执行
      svn cp svn://192.168.10.1/imooc/target.html index.html 从线上版本库复制到工作副本,支持跨库操作
      svn cp svn://192.168.10.1/imooc/ svn://192.168.10.1/imooc//trunk -m " "  脱离工作副本,不支持跨库
  swich/sw  版本库重径向
    --relocate  重径向
    示例:
      svn sw --relocate svn://192.168.0.1/old  svn://192.168.0.1/new
    

    
windos
  TortoiseSVN : http://tortoisesvn.net/downloads.html  客户端下载地址
  VisualSVN : http://www.visualsvn.com/server/download  服务端下载地址
  安装小乌龟工具
  创建文件夹,并鼠标右击选择 svn检出
  输入svn的URL

代码冲突

代码冲突:多个程序员同时更改相同位置代码,并且更改前并未及时更新本地代码导致版本不同,服务器不知道需要保留哪个版本的修改而产生冲突	
例:提交代码时提示‘is out fo data’ 一般为代码冲突

在这里插入图片描述

代码冲突更新代码时会提示 ‘conflict discovered’
此时会有提示选项:
  p  延迟提交,延迟后会把冲突的内容发送到本地,而不会影响线上版本
    延迟后可以直接编辑源文件进行修改
    也可以#svn resolve FILENME   命令进行解决冲突
  df  差异对比
  e  编辑文件 
  mc  保存自己代码
  tc  保存他人代码
处理完冲突后需要告诉服务端冲突已处理才能进行接下来的提交代码
  #svn resolved FILENAME

在这里插入图片描述

树冲突:非二进制文件冲突,无法精准到行,而且处理树冲突必须处理整个文件

多版本库解决方案:

svn默认端口号:3690

多端口号:
  运行命令:
    svnserver -d -r /svnroot/hello --listen-port 3691
    svnserver -d -r /svnroot/word --listen-port 3692
  检出命令:
    svn co svn://192.168.10.1:3691 SVNNAME1
    svn co svn://192.168.10.1:3691 SVNNAME2
    
多路径方式
  前提条件:多个版本库必须在同一目录下
  运行命令:
    svnserver -d -r /svnroot/
  检出命令:
    svn co svn://192.168.10.1/SVNNAME1
    svn co svn://192.168.10.1/SVNNAME2

主干版本与分支版本:

目的:多版本并行开发
svn cp svn://192.168.10.1/imooc/ svn://192.168.10.1/imooc/trunk -m " " 创建主干版本
svn cp svn://192.168.10.1/imooc/trunk svn://192.168.10.1/imooc/branch -m " "  创建分支版本

管理svn,需重启操作生效

hooks钩子应用
  钩子:当执行某些特定操作时触发执行预先设定好的任务
  可查看版本库中hooks文件夹的模板
  前缀:
    start  表示数据传输开始之前
    pre  数据传输之后,写入版本库之前
    post  写入版本库之后
  添加钩子时需要把后缀删掉然后按需求编写shell脚本  

版本库精简/备份版本库
  停止版本库
    killall svnserver
  备份需要的版本库
    例如备份版本6到16的版本库
    svnadmin dump /svnroot/imooc -r 6:16 > ~/imooc.repo
  创建一个新的版本库
    svnadmin create /svnroot/newimooc
  加载备份数据
    svnadmin load /svnroot/newimooc < ~/imooc.repo
  复制所有配置文件到新版本库
  运行版本库
  客户端需要重新检出工作副本
  注意:精简之后版本库的版本号还是从1开始往后递加  

备份版本库第二中方法
  停止版本库
  把整个版本库目录打包压缩
  复制解压到新服务器上并解压
  在新版本库上运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值