SVN使用说明跟踪介绍

开发 项目管理
本文向大家介绍一下SVN使用说明问题,主要包括SVN介绍,SVN特点和基本操作流程三部分内容,希望通过本文的学习大家能够掌握SVN的使用。

本节向大家讲解一下SVN使用说明方面的知识,讲述svn的基本使用规则以及操作流程等主题,本节论述内容适用于1.2以后版本。下面是具体的介绍,欢迎大家一起来学习SVN使用说明。
介绍
svn属于cs构架的源代码管理工具,服务器保存了所有版本的代码,每个开发人员从服务器checkout出代码,修改代码完成某项工作以后checkin修改的代码,在服务器中会记录一个新的软件版本
一般来说一个项目会有一个独立的代码库,代码库的建立很简单,使用svnadmincreate命令记录即可,svn手册建议项目使用以下的目录结构
project
trunk
branches
tags
trunk目录记录代码的主线,branches目录存放为了某个工作目的创建的分支,tags目录记录软件发行的某个版本。下面我们来看一下SVN使用说明中关于SVN特点的介绍。
SVN的特点:
1.全局版本号
svn的一个代码库只有一个版本号,初始版本号为0,以后不管哪个目录发生了commit,都会产生一个新的版本号,比如一开始大家可能不习惯,但是其实这样的策略有一个好处,就是每次你在本地svnup的时候,如果发现了版本号增加,那么就是说别人在代码库上有了新的修改,你很可能需要合并这个新的修改。
2.提交是原子的
每次提交多个文件修改的记录的时候,如果成功,都只会生成一条版本记录,相当于完成某项功能的一个patch,如果提交不是原子的,版本管理很难实现。
3.分支标记都使用svncopy命令
svn的分支标志是很高效的,几乎是立刻完成,因为svn在新的分支和标记上只是引用了原来代码库中的对象,这个和命令名似乎不太相符,因此大家可以放心使用svncopy命令,而不需要担心性能上的问题
4.缺乏mergetracking,合并的版本需要自己记录
这是频繁合并分支的代码树所必需注意的,具体工作下面有一些简要的叙述
基本工作流程
SVN使用说明中基本工作流程的介绍。下面使用一个本地的代码库示例日常的svn使用流程:
首先我们在本地建议一个库,访问本地的库无须用户验证
mkdir~/expe
cd~/expe
svnadmincreaterepos
在~/expe/repos建立了代码库
首先建立代码库的的基本目录结构
mkdirworking_copy
cdworking_copy
mkdirtrunkbranchestags
把干净的纯代码等需要版本控制的文件拷贝到trunk目录
svnimport.file:///home/kkmao/expe/repos-m"initimport"
这时代码库中的就包含了本地的目录结构,以及trunk下面的代码了
把本地的内容删掉,checkout出svn的一个版本出来,为什么本地的没用了呢,这是因为本地的内容里面没有.svn的目录,因此不是一个有效的workingcopy,需要svncheckout出一个有效的版本。svncofile:///home/kkmao/expe/repos/trunk.注:svnco是(svncheckout的简写)
 

现在你已经建立好了一个可以试验的workingcopy和库了,每个本地目录都会有一个.svn目录,该目录包含了完整的某一个版本的代码树,任何本地的修改都可以svndiff查看,该命令直接跟本地的这个cache进行比较,不会发生对库的访问,提高效率。SVN使用说明中svninfo可以看到你的本地和哪个库相连以及当前版本路径:.
地址(URL):file:///home/kkmao/expe/repos/trunk
档案库UUID:1d2627a1-0526-0410-8f90-b8b4839c1c87
修订版:1
节点种类:目录
调度:正常
***修改的作者:kkmao
***修改的修订版:1
***修改的时间:2007-01-0210:38:59+0800(二,021月2007)
我随便做了两个文件,准备加到库里面,作为本地修改的一个示例:
 

  1. kkmao@Loongson:~/expe/workingcopy$cathello  
  2. helloword.  
  3. Iamkkmao,whoareyou.  
  4. kkmao@Loongson:~/expe/workingcopy$svnaddhello  
  5. Ahello  
  6. kkmao@Loongson:~/expe/workingcopy$catREADME  
  7. whynotreadme????  
  8. kkmao@Loongson:~/expe/workingcopy$svnaddREADME  
  9. Ahello  
  10. add 

只修改本地内容,并没有提交。这个时候我准备提交(commit)我的更改了,首先我会运行svnupdate查看别人是否对代码进行了修改
kkmao@Loongson:~/expe/workingcopy$svnup于修订版1。
up是update的简写,update的作用是把别人修改的代码先取到本地,上面的结果是没有人进行了修改。为什么要先up呢,这是因为如果有冲突的话,应该在本地解决冲突以后,再进行commit,事实上你可以直接svnci(commit),但是如果别人和你修改了同一个文件,svn也不会让你成功提交,还是需要先进行本地的update。
现在我已经可以commit了,我先查看一下我需要commit什么,基本的规则是,patch应该一个一个的commit怎么做呢,我会先查看我本地修改了什么,使用status-u命令kkmao@Loongson:~/expe/workingcopy$svnstatus-ubr /> A0hello
A0README
状态于修订版:1
详细查看一下更改的内容svndiffhello,svndiffREADME,我发现这两个是无关的更改,他们属于两个不同的patch,应该单独提交。因此我提交了两次,并指明提交的文件
kkmao@Loongson:~/expe/workingcopy$svncommithello-m"addhello"
新增hello
传输文件数据.
提交后的修订版为2。
kkmao@Loongson:~/expe/workingcopy$svncommitREADME-m"addREADME"
新增README
传输文件数据.
提交后的修订版为3。
kkmao@Loongson:~/expe/workingcopy$
例子中的-m的内容也太过简单,每次提交都应该有详细的comment,特别是对bug的修复,应该详细说明bug的产生原因,修复的道理等
从上面看到,应该勤commit,不要等到修改了一大堆文件以后,才想起来要commit。请期待下节关于SVN使用说明的介绍。

【编辑推荐】

  1. SVN使用手册之入门篇
  2. SVN管理与应用相关的资料参考手册
  3. ApacheSVN服务器安装指导手册
  4. Windows操作系统中SVN使用手册详解
  5. SVN服务器安装指导手册
责任编辑:佚名
相关推荐

2010-05-27 14:18:00

SVN使用说明

2010-05-27 13:48:30

SVN使用说明

2010-01-13 09:48:34

Boost库

2010-05-27 14:48:45

SVN命令行使用说明

2010-05-26 14:01:47

SVN安装使用手册

2009-12-29 14:28:58

ADO数据

2009-12-31 09:42:41

ADO对象模型

2010-01-05 15:48:51

JQuery缓存

2010-01-08 09:03:38

返回JSON数据

2009-12-18 15:11:50

ADO.NET类

2010-01-07 18:19:01

JSON异步

2010-01-06 16:53:57

JS两种语法

2013-10-31 10:59:41

Clouda使用

2010-06-04 09:12:23

Linux性能测试工具

2010-05-27 14:28:41

TortoiseSVN

2009-12-21 10:10:25

Oracle产品

2009-12-15 15:13:07

.NET Framew

2009-12-24 16:20:43

WPF Tooltip

2009-12-28 11:34:22

WPF处理消息

2011-03-15 10:00:01

NetfilterIPTables
点赞
收藏

51CTO技术栈公众号