系统提供撤销的功能对我们实际开发中特别重要。改动后撤销几乎也是我们每个人经常做的事情。再多人进行同一个项目的开发或者测试的时候,版本的唯一性(类似于临界区资源),也就是说A 和B 两个人协同工作的时候不能同时对同一个文件改动,并保存成功。否则就会出现不一致问题。版本控制系统很好的解决了这一问题,并且提供日志文件,记录改动的各种信息,方便撤销操作。版本控制系统就是一套在程序开发过程中存储源代码所有修改的工具。此处主要介绍Subversion的用法。

1、安装Subversion

Ubuntu 在安装源中提供了Subversion 的下载,

sudo apt-get update

sudo apt-get install subversion  ##全部小写

测试安装结果:

svn -–version

svnadmin –version

结果如下表示安装成功:

2、建立项目仓库

项目仓库用来存储各种文件的主要场所,以目录以作为载体。建立仓库svn_test。将项目所有相关的源代码放在这里面。

zhuxy@ubuntu:~$ mkdir /home/zhuxy/svn_test

zhuxy@ubuntu:~$ svnadmin create /home/zhuxy/svn_test

没报错没的话就是创建成功了。此时在svn_test下面已经有部分文件了。Subversion就是通过他们来记录项目发生的过程。

    

3、创建项目并导入源文件

第一步创建两个项目;第二步导入源文件到项目仓库中import。

    

命令解析:import为导入源代码命令。目的是file:///home/zhuxy/svn_test/project。一般会是网络上的一个站点(目录)。本地采用本地目录,“file://”表示协议。subversion支持HTTP、SSH 协议。project为本地的项目名,这并不是实际存在的一个项目,而是一个“逻辑上”的项目。为了防止自己把项目的名字忘记了,可以在本目录下创建一个project项目。但这个project项目中不会自动存储任何内容。”.“表示当前目录,表示将当前目录的所有文件都导入到项目仓库中。

-m选项是为本次操作添加一个操作说明,对于日志文件特别重要,相当于程序中的注释,当出现问题时,可以根据提示信息快速找到原因,即使省略该选项,Subversion 还是会强制要求输入的。

4、开始项目开发

开发人员总是会在自己主机上建立一个目录,然后在这个目录下编写程序。下面这个目录就是在用户主目录下面建立work/project目录,接下来的”开发“就放在此目录下面。

下面从“服务器“上取得源文件的工作拷贝。

由于刚刚把源文件导入到了项目仓库。所以在subversion的逻辑来看,这就是版本”1“

checkoutzhidao subversion从服务器签出源资源。目标是project目录。查看project目录,可以看到源文件已经在里面了。

此时project目录已经和项目“file……/project”已经在subversion层面上建立了关联,以后只要在projec目录上执行的svn update就可以更新本地源代码。

5、后续比较重要的几个命令

客户端修改结束保存时可以查看svn中的源代码有没有在被修改(修改未提交)

svn status multiply.c

会显示M    multiply.c

查看修改的和源文件的不同:

svn diffmultiply.c

修改后提交

svn commit -m “修改宏定义宏的错误”

完成提交后会查看日志文件,会发现multiply.c的版本号变为2

svn log multiply.c

6、解决冲突的命令

如果两个人同时对一个文件改动,就会发生冲突。

第一个人提交可以顺利提交(就是先提交的那个人,因为这样子版本号自然+1),第二个提交的就会报错,因为版本号+1已经被占用。

svn update

svn resolves multiply

7、撤销改动

回滚到版本3的状态

svn merge -r 4:3 multiply.c

svn commit -m “鉴于效率,保留两位数的除法宏定义”

声明:此博文参考刘忆智的书籍Ubuntu从入门到精通,浅显易懂,值得一读。

版本控制系统Subversion的更多相关文章

  1. Subversion版本控制系统的安装和操作.

    SVN的简单介绍 SVN是Subversoin的简称,是一个开源的版本控制系统 Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,他可以记录每一次文件和目录的 ...

  2. svn(subversion)版本控制系统学习与理解

    定义:Apache Subversion(简称SVN,svn),一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS. 从这段话,我们可以得到四点信息: ...

  3. GIT分布式版本控制系统

    Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...

  4. GIT(分布式版本控制系统)

    Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.[1] Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本 ...

  5. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  6. 手把手教你玩转Git分布式版本控制系统!

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...

  7. Android版本控制系统及其间的差异

    一.何谓版本控制 它是一种软件工程籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它透过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编辑错误之后还可以回溯到以前的版本 二.可 ...

  8. Google Code项目代码托管网站上Git版本控制系统使用简明教程

    作为一个著名的在线项目代码托管网站,Google Code目前主要支持三种版本控制系统,分别为Git, Mercurial和 Subversion.Subversion即SVN相信大家都已经熟知了,这 ...

  9. Git基础 1 ---- 版本控制系统的介绍

    1 Git 1 版本控制系统 vcs - version control system 2 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 3 版本控制系统的主要功能 1 ...

随机推荐

  1. 设备树API

    引子 首先看一个例子,也可参考linux设备树语法中的gpio示例.该示例选自openwrt的gpio-button-hotblug驱动. 设备树code: gpio-keys-polled { co ...

  2. IDEA 2017破解 license server激活

    确保电脑在联网状态,在激活窗口选择license server 填入下面的license server: http://intellij.mandroid.cn/ http://idea.imsxm. ...

  3. A - Bi-shoe and Phi-shoe 欧拉函数

    /** 题目:A - Bi-shoe and Phi-shoe 链接:https://vjudge.net/contest/154246#problem/A 题意:每一个数都有一个得分,它的得分就是, ...

  4. openfile

    linux修改open files数   概要 linux系统默认open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不 ...

  5. 利用JNDI的命名与服务功能来满足企业级API对命名与服务的访问

    包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务: 可以同时连接到多个命名或目录服务上: 建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必知道对象或资源的物理ID. JNDI ...

  6. Spring MVC生成JSON数据

    以下示例演示如何使用Spring Web MVC框架生成JSON数据格式.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: ...

  7. (转)txt读写 操作封装

    [code]csharpcode: using UnityEngine; using System.Collections.Generic; using System.IO; using System ...

  8. gitlab报错收集

    登录502报错 一般是权限问题,解决方法: /var/log/gitlab 如果还不行,请检查你的内存,安装使用GitLab需要至少4GB可用内存(RAM + Swap)! 由于操作系统和其他正在运行 ...

  9. zoj2770 Burn the Linked Camp --- 差分约束

    有n个营地,每一个营地至多容纳Ci人.给出m个条件:第i到第j个营地之间至少有k人. 问n个营地总共至少有多少人. 此题显然差分约束.要求最小值.则建立x-y>=z方程组,建图求最长路. 用d[ ...

  10. 多个 python的pip版本选择

    如果你电脑里面装了多个版本的python python3 -m pip instatll xlutilspython2 -m pip instatll xlutils 加载新的pippython -m ...