版本控制系统Subversion
系统提供撤销的功能对我们实际开发中特别重要。改动后撤销几乎也是我们每个人经常做的事情。再多人进行同一个项目的开发或者测试的时候,版本的唯一性(类似于临界区资源),也就是说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的更多相关文章
- Subversion版本控制系统的安装和操作.
SVN的简单介绍 SVN是Subversoin的简称,是一个开源的版本控制系统 Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,他可以记录每一次文件和目录的 ...
- svn(subversion)版本控制系统学习与理解
定义:Apache Subversion(简称SVN,svn),一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS. 从这段话,我们可以得到四点信息: ...
- GIT分布式版本控制系统
Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...
- GIT(分布式版本控制系统)
Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.[1] Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本 ...
- 手把手教你玩转Git分布式版本控制系统! (转载)
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...
- 手把手教你玩转Git分布式版本控制系统!
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...
- Android版本控制系统及其间的差异
一.何谓版本控制 它是一种软件工程籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它透过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编辑错误之后还可以回溯到以前的版本 二.可 ...
- Google Code项目代码托管网站上Git版本控制系统使用简明教程
作为一个著名的在线项目代码托管网站,Google Code目前主要支持三种版本控制系统,分别为Git, Mercurial和 Subversion.Subversion即SVN相信大家都已经熟知了,这 ...
- Git基础 1 ---- 版本控制系统的介绍
1 Git 1 版本控制系统 vcs - version control system 2 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 3 版本控制系统的主要功能 1 ...
随机推荐
- Introdution to Spring Mobile
1. In Eclipse, create a new Maven Project using the spring-mvc-jpa-archetype. 2. Add the spring-mobi ...
- hdu1695 GCD2 容斥原理 求x属于[1,b]与y属于[1,d],gcd(x,y)=k的对数。(5,7)与(7,5)看作同一对。
GCD Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Sub ...
- Spring MVC内部资源视图解析器
InternalResourceViewResolver用于将提供的URI解析为实际URI.下面的示例演示如何在Spring Web MVC框架中使用SpringResultViewResolver. ...
- python django -4 模板
模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视 ...
- ZJU 17th 校赛
第一次参加校赛,和小伙伴们拿了7个气球,还是挺开心的. 简单记个流水账吧. A:判断出INF的情况后 暴力模拟即可. INF的情况有x=1 || y=1 || (x==2 && y= ...
- To Be a Dog Man
作为一个多年的篮球爱好者,多年保持者对于足球的偏见. 也许不了解也是偏见開始的地方. 直到我最终看到了那个男人---梅西 梅西:一个犬人,一个病人 视频作者是阿根廷专栏作家Hernam Casciar ...
- 【动态规划】skiing
[动态规划]skiing 时间限制: 1 Sec 内存限制: 128 MB提交: 34 解决: 15[提交][状态][讨论版] 题目描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激. ...
- phpcs,phpmd,phan安装部署,phpstorm配置phpunit
git参考地址:https://github.com/YunhanTech/overview/blob/master/php/learn-road.md phpcs 安装 composer globa ...
- zoj2770 Burn the Linked Camp --- 差分约束
有n个营地,每一个营地至多容纳Ci人.给出m个条件:第i到第j个营地之间至少有k人. 问n个营地总共至少有多少人. 此题显然差分约束.要求最小值.则建立x-y>=z方程组,建图求最长路. 用d[ ...
- 【BZOJ4771】七彩树 主席树+树链的并
[BZOJ4771]七彩树 Description 给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点.每个节点都被染上了某一种颜色,其中第i个节点的颜色为c[i].如果c[i]=c[j], ...