SVN的使用

  1. SVN的工作机制
    1. C/S结构

    1. 基本操作
  • 检出(Checkout)
    1. 把服务器端版本库内容完整下载到本地。
    2. 在整个开发过程中只做一次。
  • 更新(Update)
    1. 把服务器端相对于本地的新的修改下载到本地。
  • 提交(Commit)
    1. 把本地修改上传到服务器。
    2. 安装服务器端程序
  • yum install -y subversion

    验证

    [root@rich ~]# svn --version

    svn,版本 1.7.14 (r1542130)

       编译于 Apr 11 2018,02:40:28

     

    版权所有 (C) 2013 Apache 软件基金会。

    此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。

    Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。

     

    可使用以下的版本库访问模块:

     

    * ra_neon : 通过 WebDAV 协议使用 neon 访问版本库的模块。

      - 处理“http”方案

      - 处理“https”方案

    * ra_svn : 使用 svn 网络协议访问版本库的模块。  - 使用 Cyrus SASL 认证

      - 处理“svn”方案

    * ra_local : 访问本地磁盘的版本库模块。

      - 处理“file”方案

     

    1. 创建版本库
  • SVN服务配置文件
  • /etc/sysconfig/svnserve

    # OPTIONS is used to pass command-line arguments to svnserve.

    #

    # Specify the repository location in -r parameter:

    OPTIONS="-r /var/svn"

  • 创建版本库目录
  • mkdir -p /var/svn

  • 在版本库目录下创建具体项目目录
  • mkdir pro_oa

  • 创建SVN版本库
  • svnadmin create /var/svn/pro_oa

  • 版本库内容
  • 将来的访问方式
    1. 启动SVN服务
  • systemctl start svnserve.service

    systemctl enable svnserve.service

     

    1. 开启匿名访问
  • 配置文件
  • 版本库根目录/conf/svnserve.conf

  • 配置项
  • anon-access = write

    1. 关闭selinux
  • 配置文件
  • /etc/sysconfig/selinux

  • 修改
  • SELINUX=disabled

  • 重启
  • reboot

  •  

  • 3.命令行客户端 

    1. 创建两个工作区目录模拟两个开发人员

mkdir -p /root/workspace/harry

mkdir -p /root/workspace/sally

    1. 检出
  • 作用:完整下载版本库中的全部内容。
  • 命令:
    1. svn checkout svn://192.168.70.140/pro_oa ./
  • 附加效果
    1. 在指定目录下创建.svn目录
    2. 保存本地目录和文件状态信息,用来和SVN服务器进行交互
  • 工作副本
    1. .svn所在的目录
    2. 版本控制相关操作都需要在工作副本目录下执行。例如:提交、更新等等这样的操作。
    3. 为了保证工作副本能够正常和服务器进行交互,请不要删除或修改.svn目录中的内容。
    1. 添加
  • SVN要求提交一个新建的文件前先把这个文件添加到版本控制体系中。
  • svn add 文件名
    1. 提交
  • 要求1:附加日志信息
    1. 日志信息相当于写Java代码时的注释,用来标记本次操作所做的修改。
    2. svn commit -m "xxx" [文件名]
  • 要求2:必须具备相应的权限
    1. 使用文本编辑器打开版本库根目录/conf/svnserve.conf文件

把匿名访问配置项的注释打开。注意:行的开头不能有空格

[root@rich harry]# svn commit hello.txt

svn: 提交失败(细节如下):

svn: “/root/workspace/harry/hello.txt” 尚未纳入版本控制

[root@rich harry]# svn add hello.txt

A         hello.txt

[root@rich harry]# svn commit hello.txt

svn: 提交失败(细节如下):

svn: 无法使用外部编辑器获得日志信息;考虑设置环境变量 $SVN_EDITOR,或者使用 --message (-m) 或 --file (-F) 选项

svn: 没有设置 SVN_EDITOR,VISUAL 或 EDITOR 环境变量,运行时的配置参数中也没有 “editor-cmd” 选项

[root@rich harry]# svn commit -m "My first commit" hello.txt

svn: 提交失败(细节如下):

svn: 认证失败

[root@rich harry]# svn commit -m "My first commit" hello.txt

增加           hello.txt

传输文件数据.

提交后的版本为 1。

 

    1. 查看服务器端文件内容

[root@rich harry]# svn list svn://192.168.70.140/pro_oa

good.log

hello.txt

    1. 更新操作
  • 作用:把服务器端文件所产生的所有修改下载到本地
  • 命令:svn update [文件名]

 

4.冲突

    1. 过时的文件
  • 概念:在一个相对服务器端版本来说是旧版本的基础上进行了修改的文件。
  • 要求:所有过时的文件都必须先执行更新操作,更新后在最新版基础上修改的文件才允许提交。
    1. 冲突的产生
  • 条件1:本地当前编辑的文件已经过时。
  • 条件2:从服务器端更新下来的修改和本地的修改在“同文件同位置”不一致。
    1. 冲突的表现
  • 文件内

  • 目录内

 

xxx.mine文件:发生冲突时本地文件内容

xxx.r[小版本号]文件:发生冲突前文件内容

xxx.r[大版本号]文件:发生冲突时服务器端文件内容

    1. 冲突的手动解决
  • 第一步:删除冲突发生时产生的三个多余文件
  • 第二步:删除冲突文件内多余的符号
  • 第三步:把文件编辑到满意的状态
  • 第四步:提交
    1. 冲突的半自动解决
  • 设置SVN_EDITOR环境变量

vim /etc/profile

-------------------------------------------

SVN_EDITOR=/usr/bin/vim

export SVN_EDITOR

-------------------------------------------

source /etc/profile

echo $SVN_EDITOR

 

  • 解决的过程
    1. 使用e选项进入文件内容编辑界面

    1. 进入vim编辑器编辑文件内容

    1. 编辑完成后使用r选项标记为已解决

    1. 减少冲突的发生
  • 尽可能在修改文件前先进行更新操作,尽量在最新版基础上修改文件内容。
  • 尽量减少多人修改同一个文件的可能性。
  • 加强团队成员之间的沟通。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值