从零开始使用SVN(1)--服务端与命令行操作

   日期:2020-05-16     浏览:103    评论:0    
核心提示:概述在团队开发的过程中,通常有如下需求:协同修改、数据备份、版本管理、权限控制、历史记录等,因此有了版本控制的思想。版本控制指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。版本控制工具对版本控制思想的具体实现,版本控制工具可以分为集中式、分布式两种。集中式:CVS、SVN、VSS···分布式:GIT由于将入职的公司使用 SVN 较多,所以在这具体地学习一下。SVNSVN 全称 Subversion,采用 C/S 结构设计,常用的操作如开发工具

文章目录

      • 概述
      • Linux下的安装和使用
        • 服务器端安装
        • 命令行操作
          • 检出
          • 添加
          • 提交
          • 更新
        • 冲突与解决
          • 冲突的产生
          • 冲突的解决

概述

在团队开发的过程中,通常有如下需求:协同修改、数据备份、版本管理、权限控制、历史记录等,因此有了版本控制的思想。

版本控制

指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

版本控制工具

对版本控制思想的具体实现,版本控制工具可以分为集中式、分布式两种。

  • 集中式:CVS、SVN、VSS···
  • 分布式:GIT

由于将入职的公司使用 SVN 较多,所以在这具体地学习一下。

SVN

SVN 全称 Subversion,采用 C/S 结构设计,常用的操作如下:

  • Checkour:检出,从服务器端的版本库中下载需要的内容到本地。在一次开发中,只需做一次。
  • Update:更新,把服务器端相对于本地的修改下载到本地。
  • Commit:提交,将本地的修改上传到服务器。

Linux下的安装和使用

服务器端安装

为了学习演示客户端的操作,先在云服务器上搭建自己的 SVN 版本库。

  1. 首先安装服务器端程序,查看版本信息

yum install -y subversion

svn --version

  1. 创建并配置版本库

mkdir /usr/local/svn/repository -p // 创建版本库目录

cd /usr/local/svn/repository

mkdir mypro //在版本库目录下创建具体项目目录

svnadmin create mypro/ //真正创建 SVN 版本库

创建完项目的版本库后,版本库中有以下默认内容:

  1. 配置并启动 SVN 服务

vim /etc/sysconfig/svnserve //修改 SVN 默认根目录

systemctl enable svnserve.service //设置开机启动

systemctl start svnserve.service //启动 SVN 服务

ps aux | grep svn //检查是否启动成功

注: SVN 默认使用 3690 端口,云服务器需要开放相应端口。

命令行操作

命令行的操作,可以创建两个工作区来模拟两个开发人员:

检出

开发人员检出项目

svn checkout svn://ip.ip.ip.ip/mypro ./ //检出版本库中所有内容

harry、sally 分别执行以上命令,目录下会自动创建 .svn 目录:

修改版本库的url:

svn sw --relocate svn://old_ip/目录 svn://new_ip/目录

添加

SVN 要求提交一个新建的文件前需要先把它添加到版本控制体系(区别于版本库)中:

svn add xxx

在 harry 下创建 hello.txt 文件,并添加到版本控制体系中:

提交

提交之前,需要设置版本库的权限,在 …/mypro/conf 下的 svnserve.conf 文件中进行配置,下图开启匿名的写权限:

之后可以提交 harry 创建的文件,由下图可知上传成功,且当前版本为1:

svn commit xxx -m “描述”

在服务端就可以看到我们提交的文件:

svn list svn://ip.ip.ip.ip/mypro

更新

前面 harry 用户提交了文件,对服务端的版本库产生了修改,而 sally 用户检出的版本还是上一个版本,这时 sally 用户就可以进行更新的操作:

svn update [文件名] // []表示可选

冲突与解决

冲突的产生

过时文件:开发人员本地的版本相对服务器端版本来说是旧的版本,在旧的版本上进行了修改。

产生冲突的条件

  • 本地当前编辑的文件已经过时了。
  • 从服务器端更新下来的修改和本地的修改在“同文件同位置”不一致。

制造冲突

在命令行我们可以制造冲突。

  • harry:

  • sally:

这时我们先提交 sally 修改后的 hello.txt:

此时,harry 本地的版本是落后于服务端的,harry 在提交时就会提醒本地文件已经过时:

然后我们执行更新操作,这时候就产生了冲突,我们先选择 p 推迟:

冲突表现

  • 文件内:

  • 目录内(r后面的数字表示版本号):

冲突的解决

手动解决

  1. 删除冲突发生时产生的三个文件
  2. 删除冲突文件内多余的符号
  3. 将文件编辑到满意的状态后提交

半自动解决

  1. 设置 SVN_EDITOR 环境变量

    which vim //获取 vim 的路径

    vim /etc/profile //编辑 profile 文件

    //在文件下面加入: export SVN_EDITOR= vim 的路径

    source /etc/profile 系统重新加载 profile

  2. 在 svn 给我们的选择中,选择 e 进行编辑

  3. 编辑满意后,选择 r 选项标记此冲突已解决(解决后得再次提交)

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服