Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1430592
  • 博文数量: 613
  • 博客积分: 11499
  • 博客等级: 上将
  • 技术积分: 5511
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-12 19:27
  • 认证徽章:
文章分类

全部博文(613)

文章存档

2016年(5)

2015年(18)

2014年(12)

2013年(16)

2012年(300)

2011年(45)

2010年(37)

2009年(79)

2008年(101)

分类: LINUX

2011-06-23 12:48:13

SVN 版本控制系统入门 (2011-05-25 18:19)
分类: 管理工具

网上看到的教程,拿来学习一下:

简单的说SVN是一个GPL版本控制软件,其创始人是从CVS项目中出来了,其目标就是替换掉CVS,SVN尽力维持CVS的用法习惯,并增加了一些很方便但CVS做不到功能,如目录改名等。笔者使用了两个月的SVN后,感觉SVN确实做到了。

SVN简介及使用说明

作者:mirclle

一、概述

简单的说SVN是一个GPL版本控制软件,其创始人是从CVS项目中出来了,其目标就是替换掉CVS,SVN尽力维持CVS的用法习惯,并增加了一些很方便但CVS做不到功能,如目录改名等。笔者使用了两个月的SVN后,感觉SVN确实做到了。

二、SVN能够做什么

1、从CVS继承的功能

(1)、程式码版本的存储与维护

(2)、程式码版本的追踪回溯

(3)、程式码版本的分合控制

(4)、职员多人合作开发专案

(5)、程式码远端管理维护

(6)、程式码匿名截取

2、在CVS基础上增添的新功能

(1)、目录版本控制,目录更名

在CVS中,一个目录是没有版本历程的,假如原来一个名为doc/的目录,在经过一段时间之后,发现它应该要称为manual/比较恰当,此时我们只能建立一个新manual/,把doc/目录下的档案复制过去,把manual/下的档案新增至CVS系统中,再把doc/删除。而且必须注意的是,在档案的复制与删除过程中,我们也同样地遗失了这些档案的历史历程。版本控制最主要的资料就这样丢掉了。

但是在SVN中,目录与项目文件同样都是纳入版本控制之中。也就是说,我们可以随时要求SVN将某个项目文件恢复到某个时间点的状态,也可以对目录进行更名的动作。

(2)、对多个项目文件进行不分割送交

在CVS中,虽然我们可同时对多个项目文件进行送交,但是CVS并不保证一次的送交是不可分割的,而SVN的送交就没有这个问题。送交的结果不是全都进系统,就是全都没有进系统,不会只有一部分及系统的状况。

(3)、更佳的二进制资料处理

首先,SVN不主动更动项目内容,除非使用者加上这样的设定。再者,它使用可适用于文字与二进制资料的内容差异演算法,在项目储存上,文字与二进制资料都具有相同的优势。现在,不只是文字资料适合置于版本控制系统中,连二进制资料也可以很方便地放进来。

(4)、高效率的分支与标记

在SVN系统的标记是以目录的副本的方式建立的,而副本是以类似链接的方式来建立。也就是说,不管涉及的目录与项目有多少,它所花费的时间都是固定的,不会因为档案越多而耗时越久。同样的,SVN的分支也是以目录的副本来实现的。

注释:1-6条是SVN继承了CVS的特点,因此,在这里不再进行详细的描述。7-10条为SVN在CVS基础上增加的新功能。 其他详细内容请参考关键词(SVN CVS SOURCESAFE 版本控制 源代码管理)。

三、名词解释

1、Check out——从服务器端取得代码

把服务器资料库里存放的某个项目代码取出来,放到本地主机中,这个动作叫做“check out”。使用具体步骤:进入要安装项目文件的目录中,点击鼠标右键,选择SVN Check out项,然后填写项目的原始路径和安装路径后点击“ok”即可。

2、Update——更新项目代码

以前checkout过的一个项目代码,当服务器上有了更新的代码,或者本地代码损坏或丢失,update可以自动判断本地哪些文件较旧,或者缺少,都会自动更新。当然,你也可以删除掉本地代码,重新check out。使用具体步骤为:在要更新的项目上点击鼠标右键,选择“SVN Update”项即可。

3、Commit——将本地代码上传到服务器

当修改(增加,删除,修改等所有写操作)过本地代码后,这个动做会把新代码提交到SVN。如果本地代码做了修改,不执行commit操作,SVN服务器上是不会有这个新版本的,也就是说其它人也得不到。对代码做过修改后,应尽快commit。使用具体步骤:在修改完待上传的项目上点击鼠标右键,选择“SVN Commit”项即可。

4、Export——将项目导出到本地

如果想要得到一个完整的项目,且不需要再进行版本的改动,可以直接把该项目导出版本控制系统,成为一个普通文件进行使用。具体步骤为:单击鼠标右键,选择TortoiseSVN——>>Export项,然后填入要导出的项目既可。

5、Show Log——显示所有版本

如果项目成员想查看本地下载的属于版本控制内的某个项目以前的所有版本,就在该项目上单击鼠标右键,选择TortoiseSVN菜单下的Show Log项。则该项目的所有版本及其每个版本的修改信息都将显示在出现的新对话框下,供项目成员进行参考。

6、Update To Revision——恢复到某个版本

当项目成员想要把某个项目恢复到以前的某个版本时,在该项目上单击鼠标右键,选择TortoiseSVN菜单下的Update To Revision,于是,在出现的Update对话框中可以先点击“Show Log”来查看及确定要恢复到的版本号,或者直接将要恢复到的版本号填入“Revision”旁的编辑区内,最后点击“OK”。于是,该项目就恢复到想要的项目版本了。

7、Add——增加文件

当项目成员想在项目中添加一个新文件时,请把该文件先拷贝到项目文件加下,然后,在该文件上单击鼠标右键,选择TortoiseSVN菜单下的Add项,于是,该文件就可以被添加到项目中了。

四、高级特性

1、Update to revision

Update默认更新到最新版本,update to revision则可以更新到指定版本(可以是更旧的版本)。

2、增删项目文件及目录的操作

增删项目内文件或目录,请一定使用svn add ,或svn del 或svn rename,然后做commit操作


上文来自于:http://mirclle.itpub.net/post/7306/40790

 

客户端svn的使用

这里只是记录Linux下命令行客户端svn的使用。

1. 第一次导入本地文件到SVN
    首先你的本地projet应该有文件夹branches, tags, trunk(为啥我暂时不知道)
    然后导入:

    svn import /your_projec_path file:///svn_project_path -m "initial import"

2. 取出工作拷贝

    svn checkout file:///svn_project_path /your_local_file_name

    最后一个参数为下载下来的文件名字,随便起都行。

3. 常用命令

    在checkout了拷贝之后,拷贝的目录下面有一个./.svn目录,里面记录了相关信息。

    svn diff   : 检查本地拷贝和svn中的文件的区别
    svn log   : 列出修改日志
    svn add   : 把文件和目录放入版本控制中,会在下一次提交的时候加入
    svn update   :更新你的拷贝
    svn commit   :提交你的拷贝

    省下的直接 svn help command 来查询好了

4.典型的工作周期是这样的:

  • 更新你的工作拷贝

    • svn update

  • 做出修改

    • svn add

    • svn delete

    • svn copy

    • svn move

  • 检验修改

    • svn status

    • svn diff

    • svn revert

  • 合并别人的修改到工作拷贝

    • svn update

    • svn resolved

  • 提交你的修改

    • svn commit

以上是基本入门的东西,复杂的合并什么的慢慢研究。

阅读(351) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册