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 resolveSVN的相关资源
这里是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 开发者3CVS在服务器端维护代码文档库,不同的开发者在本地机器上建立对应代码树,并利用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 updateCVS_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 InitVersioncheckout/co 从服务器获取代码,在本地建立代码树 cvs checkout project_nameupdate/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_namediff 查看文件不同版本的区别 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版本控制目录" 指的是一个操作指南或工具,旨在帮助用户快速、简便地删除Subversion (SVN) 或 Concurrent Versions System (CVS) 版本控制系统中的目录。这些版本控制系统是软件开发中常用的...
"版本控制工具比较:SVN、GIT、CVS及Mercurial" 版本控制是软件开发过程中的一个重要环节,用于跟踪和管理代码的变化。有多种版本控制工具可供选择,每种工具都有其特点和优缺。下面将对 SVN、GIT、CVS 及 ...
- **SVN**:SVN优化了二进制文件的处理能力,提供与文本文件同等的版本控制支持,使得二进制文件如图像、音频、视频等也能得到有效管理和版本控制。 #### 传输方式与效率 - **CVS**:在处理二进制文件时,CVS通常...
本文将详细介绍Java开发中常用的三种版本控制工具:SVN、CVS和VSS。 **1. SVN(Subversion)** SVN全称是Apache Subversion,是一个开源的集中式版本控制系统。它允许开发者在一个中央存储库中存储和管理项目的...
在Linux内核开发中,SVN被广泛用于版本控制,开发者通过SVN管理源代码的变更和版本迭代。 #### 4.2 SVN版本控制基本流程 - **SVN服务器端**:负责版本数据的存储和管理,接受来自客户端的请求。 - **SVN客户端**:...
虽然它易于使用,但因其历史遗留问题和一些稳定性问题,许多开发者转向了其他更现代的版本控制工具。 5. **Git** Git 是目前最流行的分布式版本控制系统,由 Linus Torvalds 创建。Git 支持快速的本地分支操作,...
3. **配置**:在开始转换之前,你需要创建一个配置文件,其中包含CVS和SVN仓库的信息,以及转换规则。配置文件通常用Python编写,允许高度自定义。 **三、使用cvs2svn进行转换** 1. **准备CVS仓库**:确保你有CVS...
- CVS和SVN都支持与其他开发工具(如IDE)的集成,如Eclipse、IntelliJ IDEA等,提供更便捷的版本控制操作。 9. 存储和性能: - CVS使用增量式存储,可能导致文件历史占用大量磁盘空间。 - SVN采用二进制差异...
CC 是 IBM 提供的一种高级版本控制工具,尤其适用于大型企业环境。它支持动态和静态视图,提供了强大的分支和合并管理功能。 ### 4. VSS (Visual SourceSafe) VSS 是 Microsoft 提供的版本控制系统,主要用于 ...
确保你的系统已经安装了CVS和SVN客户端。 2. **准备CVS仓库信息**:收集CVS仓库的根目录、模块列表以及访问凭据。 3. **创建SVN仓库**:在目标服务器上创建一个新的空SVN仓库。 4. **运行SVN-Importer**:执行...
使用这个脚本,用户可以快速地清理不再需要的SVN、CVS和VSS相关文件,从而保持文件系统的整洁,避免占用不必要的磁盘空间。 批处理脚本是基于DOS命令行环境的,它通过一系列命令来执行任务。在这个脚本中,可能会...
在众多版本管理工具中,**Visual SourceSafe (VSS)**、**ClearCase**、**CVS** 和 **Subversion (SVN)** 是较为流行的选择。 - **Visual SourceSafe (VSS)** - **概述**:VSS 是 Microsoft 开发的一款版本控制工具...
与常用的版本控制工具 CVS, Subversion 等不同,它 采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的 速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git...
集中式版本控制系统以CVS和SVN为代表,它们使用一个单一集中管理的服务器来保存所有文件的修订版本,所有开发者从该服务器下载最新版本,进行开发并提交更改。CVS是最早的开源版本控制系统之一,它可以跨平台使用,...
在IT行业中,版本控制系统如Subversion (SVN) 和 Concurrent Versions System (CVS) 是团队协作开发的重要工具,用于管理代码版本和跟踪更改。然而,有时候我们可能需要清理工作环境,比如移除与这些系统相关的配置...
这些工具在软件开发中扮演着至关重要的角色,帮助团队协作、版本控制和追踪代码变更。我们将以Eclipse集成开发环境(IDE)为背景,探讨如何在Eclipse中有效地使用这些工具。 1. **SVN(Subversion)** SVN是一种...
CVS(Concurrent Versions System)和SVN(Subversion)都是源代码版本控制系统,用于管理和跟踪文件及目录的变更。它们都属于SCM(Software Configuration Management)工具,但两者之间存在显著的区别。 1. **...
CVS和SVN虽同为版本控制系统,但其数据结构和工作方式存在显著差异。CVS基于文件级别的锁定机制,而SVN则采用乐观锁,允许并发更新。因此,简单的数据复制无法实现有效的迁移,需要专门的工具来处理这一过程中的复杂...
这样的工具主要用于帮助用户管理和优化他们在使用这些版本控制工具时产生的工作目录,包括删除无用的临时文件、日志、备份等,以保持工作区整洁,提高效率。 描述中提到,这个工具是“集成在资源管理器右键菜单中”...