版本控制工具SVN和CVS
<!--INVALID LISP CODE--><!-- Page published by Emacs Wiki begins here -->
CVS相信大家都听说过,不过这个广为使用的版本控制工具还有不少问题,包括中文支持和二进制文件的处理都有或多或少的问题。
现在好了,CVS的作者又为我们开发了SVN。Gnome和KDE的开发团队都已经换用SVN了,您为什么不试一下呢?
最基本的用法
建立代码库 svnadmin create /path/to/repos
导入数据 svn import /path/to/project file::///path/to/repos -m "initial import"
导出数据 svn checkout file::///path/to/repos
提交更新 svn commit filename
添加文件 svn add
删除文件 svn delele
复制文件 svn copy
移动文件 svn move
查询状态 svn status
检查不同 svn diff
同步工作目录 svn update
合并代码 svn merge;svn resolve
SVN的相关资源
这里是SVN的项目网站。
<<Version Control with Subversion>>的电子书。
这里是繁体中文的SVN文档(只有部分被翻译过来了)。
不能不提的CVS
虽然我已经转入了SVN的阵营,但是CVS仍然是应用最为广泛的版本控制软件之一。这里收集了一些关于CVS的资源。
CVSD的安装与配置
CVS使用简介
(注:这是oscargreat整理的资料,我拿来用相信他不会介意:)
什么是CVS
CVS(Cocurrent Version Systems,并发版本系统)是一个C/S模式的版本控制系统,用于在软件开发过程中记录文件版本,协调开发人员保证文件同步,从而保证项目正确的进行并行开发,并支持版本回滚、bug 跟踪和补丁生成。使用CVS可以有效地对软件开发的源代码和开发文档进行统一的管理和组织。
CVS的工作模式:
CVS的基本工作模式如下:
CVS服务器(代码文档库)
/ | \
(版 本 同 步) / | \
开发者1 开发者2 开发者3
CVS在服务器端维护代码文档库,不同的开发者在本地机器上建立对应代码树,并利用CVS保持本地代码文档同代码文档库的一致。当由于多个开发者对文件的同时修改造成本地与库中的代码文件冲突时,CVS报告并协助解决冲突代码的合并问题。普通开发者(非管理员)对CVS的使用流程如下所示:
Check out(获取) -------------------- Merge(合并)
| | ^
v v Conflict(冲突) |
Modify(修改)-> Update(更新) ----------------
^ |
| | No Conflict(无冲突)
| v
Update(更新) <- Commit(提交)
|
v
Export(导出)
check out命令只需在开始建立本地代码树时使用一次,其后更新本地代码则使用update命令。update命令比较服务器和本地代码库的区别,并把本地代码树中过时的文件自动更新。当完成对代码的修改之后,在提交代码之前同样需要使用update命令,以获取他人并行修改的的代码。如果出现冲突(即对同一文件同时进行了修改),CVS将在本地代码中把两者都保留并标记出来,要求开发者处理冲突。在冲突不存在或已解决的情况下,使用commit命令将服务器代码更新为本地代码。CVS要求为更改提供注释,并自动为更新的文件处理版本编号。当软件需要正式发布时,使用export命令导出不包含CVS设置信息的源代码树。
CVS的管理员还使用包括init, import, admin等命令对服务器和代码库进行配置和设置。
CVS在Linux下客户端的使用
Linux下的多种IDE/Editor,如Emacs,Eclipse等都对CVS提供了支持,但基于命令行的cvs操作是最为基本和灵活的。以下介绍CVS命令行的使用。
环境变量
CVSROOT 指定代码库的位置
如果CVS代码库在本地机器上,可直接指定代码库的路径,如:
export CVSROOT=/path/to/cvsroot
如果CVS代码库在服务器上,则还需指定服务器位置,通信方式
及用户等信息,格式为:
CVSROOT=:method:username@cvs.server.address#port:/path/to/cvsroot
例如:
export CVSROOT=:ext:horn@166.111.55.119:/cvs/horn
其中ext指定使用SSH协议,horn是有权访问服务器相应目录的
用户。
CVSROOT的值可以在命令行上用-d选项重新指定,如:
cvs -d /cvs/horn update
CVS_RSH 指定客户端访问服务器的协议
使用SSH协议时,可如下设置:
export CVS_RSH=ssh
基本命令
cvs的命令行格式为:
cvs [options] command [options] filename
具体参数可参考info cvs
cvs的命令如果不带参数,则总是以当前所在目录作为操作对象。
以下介绍基本命令:
init CVS代码库的初始化,管理员使用。
cvs -d /cvs/horn init
将/cvs/horn初始化为一个代码库
import 导入一个项目/模块,管理员使用。
cvs import -m "comments" project_name vendor_tag release_tag
执行后,会将当前目录下所有文件及目录导入到
/path/to/cvsroot/project_name
目录下。
vender_tag: 开发商标记
release_tag: 初始版本标记
-m 参数如果不加,则cvs会自动启动vi,要求输入注释。
如:
cd /home/horn/blob-2.05/
cvs import blob Hornworks InitVersion
checkout/co 从服务器获取代码,在本地建立代码树
cvs checkout project_name
update/up 将本地文件同步到最新的版本
cvs update filename
不指定文件名,cvs将当前目录下所有子目录下的文件。如前
所述,在每天工作前和工作之后commit之前都应当update,以
保证本地代码总是最新的,且和服务器的代码无冲突。
commit/ci 将修改同步到CVS库里
cvs commit -m "write some comments here" file_name
CVS的很多动作都是通过cvs commit进行最后确认并修改的。
在确认的前,还需要用户填写修改注释,以帮助其他开发人员
了解修改的原因。
add 向项目中添加文件/目录
cvs add new_file
添加文件之前应当首先创建文件,之后使用cvs add添加。添
加文件的操作只有经过cvs commit之后才真正被添加到代码库
中。对于图片,Word文档等非纯文本的项目,需要使用
cvs add -kb
选项按二进制文件方式导入(k表示扩展选项,b表示
binary),否则有可能出现文件被破坏的情况。
remove/rm 从项目中删除文件
cvs remove file_name
删除时,应当先将某个源文件物理删除后,再使用remove命令。
比如:
rm file_name
cvs remove file_name
然后commit确认删除。
也可以加上-f参数将两步合一:
cvs remmove -f file_name
cvs commit -m "why delete file"
cvs不允许删除目录,空目录在update时会依选项自动忽略。
log/history 查看修改历史
cvs log file_name
diff 查看文件不同版本的区别
cvs diff -r1.3 -r1.5 file_name
查看1.3版本何1.5版本的区别
cvs diff file_name
查看本地和库中文件的区别
tag 标记版本号
cvs tag release_version
CVS自动维护每个文件的版本号,文件每修改一次,则其版本
号自动增加。此版本号不能用作阶段性发布使用。tag命令为
当前目录下所有文件标记一个统一的发行版本号。
如:
cd blob/
cvs tag 2.1.0-Hornworks
tag命令应当由项目负责人统一指定和使用。
export 项目发布, 导出不带CVS目录的源文件
本地代码树的每个目录下,CVS都创建了一个CVS/目录用于记
录当前目录和CVS库之间的对应信息。export可以导出不包含
CVS目录的代码树。
cvs export -r release project_name
导出版本号标记为 release的代码
cvs export -D 20021023 project_name
导出截至2002.10.23时最新的文件
分享到:
相关推荐
SVN 对比 CVS 的优缺点 SVN 和 CVS 都是版本控制系统,但是它们在设计理念、实现方式和使用场景上存在很大的不同。在这篇文章中,我们将对 SVN 和 CVS 进行比较,介绍 SVN 的一些优点和 CVS 的一些缺点。 全局性的...
### SVN与CVS对比分析 在软件开发领域,版本控制系统(Version Control System,VCS)是不可或缺的工具,它帮助开发者们追踪代码的变更历史,协同工作,以及管理项目的复杂性。Subversion(简称SVN)和Concurrent ...
简要cvs与svn的比较 1 对重命名、删除文件的支持 cvs:不支持本地文件重命名提交 删除分remove和erase两种前者把本地和库中文件都删除 后者只是删除本地文件 不能删除文件夹 svn:支持文件重命名提交系统会提示...
### 一键清除SVN或CVS版本控制目录 在软件开发过程中,版本控制系统如Subversion (SVN) 和 Concurrent Versions System (CVS) 被广泛应用于代码管理、版本跟踪和协同开发。随着时间的推移,项目目录中会积累大量的 ...
svn1.3版本的安装过程 以及svn和cvs的比较。 仅供各位大虾参考!
【从CVS迁移到SVN的两种方法】 随着版本控制系统的发展,越来越多的团队选择从CVS(Concurrent Versions System)转向SVN(Subversion),因为SVN提供了更强大的功能和更好的用户体验。本教程将详细解释如何使用两...
清除SVN、CVS版本控制信息,支持此文件后,在鼠标右键将多出Delete CVS/SVN Folders选项。
【标题】:“将cvs转换为svn库的工具cvs2svn” 【描述】:“将cvs库转换为svn库需要用到的工具cvs2svn” 本文将深入探讨CVS(Concurrent Versions System)到SVN(Subversion)的转换过程,重点介绍用于此目的的...
自己编写的Tortoise SVN CVS 图标修复软件,可以恢复资源管理器上的SVN,CVS图标显示问题。
在IT行业中,版本控制系统如Subversion (SVN) 和 Concurrent Versions System (CVS) 是团队协作开发的重要工具,用于管理代码版本和跟踪更改。然而,有时候我们可能需要清理工作环境,比如移除与这些系统相关的配置...
在IT行业中,版本控制系统如Subversion (SVN)、 Concurrent Versions System (CVS) 和 Visual SourceSafe (VSS) 在软件开发中起着至关重要的作用。这些系统帮助团队协同工作,跟踪代码更改,并管理项目历史。然而,...
- SVN:`svn add`和`svn commit`对应CVS的操作,此外`svn status`查看状态,`svn diff`查看差异,`svn merge`或`reintegrate`处理分支合并。 7. 分支管理: - CVS分支:CVS的分支通过` cvs tag`命令创建,然后...
标题 "SVN和CVS" 涉及到的是两种版本控制系统——Subversion(SVN)和 Concurrent Versions System(CVS)。在IT行业中,版本控制系统是开发者用来管理代码更改、协同工作的重要工具。 1. **Subversion (SVN)**: ...
dvcs-ripper-master-git-svn-cvs
在本文中,我们将对比和介绍几种常见的代码管理工具:SVN、CVS、ClearCase(CC)、Visual SourceSafe(VSS)以及Git,并提供基本的使用说明。 1. **SVN(Subversion)** SVN 是一个分布式版本控制系统,允许开发者...
NULL 博文链接:https://zzxanadu.iteye.com/blog/690400
标题 "svn,cvs目录清理工具" 提到的是一个专门针对版本控制系统Subversion (svn) 和 Concurrent Versions System (cvs) 的文件目录清理工具。这样的工具主要用于帮助用户管理和优化他们在使用这些版本控制工具时产生...
### 版本管理软件探究——SVN,CVS,VSS比较 #### 1. 版本管理概述 版本管理是软件开发过程中不可或缺的一部分,它主要用于管理软件开发过程中的源代码和其他相关文档的变化历史。软件配置管理(SCM)则是更广泛的...
### CVS到SVN迁移指南:理解与实践 在软件开发领域,版本控制系统是不可或缺的工具,帮助团队管理和追踪代码的变化。随着技术的发展,Subversion(SVN)因其强大的功能和性能逐渐取代了早期的Concurrent Versions ...