用命令行CVS管理项目文件和目录

发布文件和目录

在一个项目开发周期的某一点,管理你的项目源代码库总是包括对不希望的和陈旧的文件和目录的处理。例如,做出在一个模块里放弃某项功能的决定。或者可能一个底层修改要求去掉和移动一些文件。这一部分要介绍几种在CVS中处理这种文件管理问题的方法。

发布引用了一个指定某个将不再在项目中使用的目录或模块的方法。用于发布的命令会在一个工作拷贝种被调用,并能有效的取消对指定的目录和其下文件的CVS检出。除非这些文件和目录被明确的删除,否则它们会仍然存在于库中,包括所有的文件修改历史,但当工作拷贝被检出时,它们不会再被告括在其中。

用于发布文件和目录的命令是:

cvs rel filename (or /directory_name)

更多关于发布

移除文件

移除是另一种当你不再希望或需要一些文件成为项目源代码库的一部分时去掉这些文件的方法。为了达到这个目的,你必须首先把文件从已经被你从本地机器上检出的工作拷贝中删除。

然后,为了从共享库移除文件,请键入:

cvs remove filename

在你移除文件后,你必须提交你的修改。

使用"cvs remove" (或"cvs rm"),旧的文件不能被彻底的删除,而是连同它所有的修改历史被保存在CVS的所谓的"attic"里。
重命名和移动文件和目录

如果你已经导入了一些存在的源代码到你的库中,你可以拥有你希望重命令或移动的文件。

在你工作拷贝中重命名一个文件的最好方法包括了一系列的步骤。先使用:

cvs rm old_filename

来移除旧的文件,然后用:

cvs add new_filename

最后用:

cvs commit new_filename

在CVS中还没有特殊的方法来移除和重命名目录。然而,你可以通过创建一个新的目录,然后把你需要的文件移到里面,再把不需要的文件从旧的目录中移除,并不再使用它来达到相同的效果。这以后,你可以在下次检出一个工作拷贝时剪掉这些空的目录,通过使用:

cvs checkout -P

另一种剪掉没有文件再要升级的目录的方法是用:

cvs update -dP
导出已存在的代码?

如果你要把已存在的文件添加到项目里,你可以使用下面的命令把这些文件导入到CVS:

cvs import filename

导入允许你一次添加许多文件,如超级"cvs add"。为了导入所有已存在的目录和文件,请在你的顶层目录键入:

cvs import -m "log message" projectname

这会在此站点的CVS库里为你的项目创建文件和目录。如果你想在保持这些文件和目录的原始状态,你可以在你或其他开发者开始检出项目文件的工作拷贝时之前,把这套原始的文件标记或存档。

如果你的已存在的文件已经--要么在另一个CVS库,要么在一个不同版本的系统,如RCS的版本控制之下--这里没有自动的将这些已存在的保留有文件历史的文件导入的方法。使用cvs导入命令,拷贝文件或者把它们作为新文件创建,不保留历史。

CVS和RCS

如果你已经熟悉了RCS,RCS和CVS都为存储单独文件的版本控制历史使用了相同的格式。但是你应该知道至少两个关键的不同之处:
  • RCS的中心原则之一是文件锁定,这可以防止当你检出文件时其他开发者也检出或修改此文件。文件锁定的好处是开发者不用去处理文件中冲突的修改。RCS通过只允许每次只有一个人修改文件来保护这些文件。因此,RCS的缺点是:当其他开发者检出一个文件时,你不能对它进行修改。
  • CVS的中心原则是允许开发者同时检出,修改,和提交文件,给远程项目和地域上分散的开发者带来的好处。折衷的办法是在CVS版本控制项目上,你可以依靠解决文件中的合并冲突。解决这种冲突的唯一方法是手动编辑文件。因此,使用CVS的项目工作流程有些不同。
更多关于RCS和CVS

关键字替换

关键字替换(也叫做关键字扩充)是一个可能对你有用的RCS延续。关键字实践上会让你永远的陷入在源文件的版本信息中。文件后来被修改时,一个包含关于一个特殊关键字的所有版本信息的字符串会被替代。

例如,包含:

$Author: edk $

在文件里会永远保留那些检入过修订版的用户的登录名。

关键字替换是一个一旦文件不再是CVS库的一部分时追踪文件版本的方法。关键字替换也能被配置和禁止。

更多关于关键字(包括常用关键字的列表)

标记和分流Tagging and branching

用于在此站点上的你的项目的CVS库支持分流和标记。在你项目的某些点上,你可以使你项目的开发工作在多个方向同时进行。CVS分流提供了一个为没有项目主要工作的紧张进度的次要开发转移或分离资源树的方法,而不是维持一个单一的,线性的开发道路。要分流的原因包括:
  • 来辨别一套在项目源文件中明确定义的用于质量评估和测试的功能,或者
  • 当你想尝试一个试验,如再不影响项目进程的情况下添加特性和功能。
由于有两个操作在联合体中使用,所以标记被包括在关于分流的讨论中。标记允许你在某个时间对总体项目的状态有一个简单的影响,例如,保持一个由一些特殊特征的构造。因为CVS管理单独的文件修订本,标记是一个评估项目源代码的总体状态的重要选择。包含在一个标记中的文件将最可能在它们各自修订版编号的不同点上。

在分流和标记间的关键不同处是它们时被称赞操作的原因:

分流影响单独的文件的修订本编号,然而标记在一个固定的时间对所有项目文件分配了一个普通的识别标志。

因此,例如,项目文件经常在分支被创建的地方被标记。

最后,在你项目中有成功结果的分支将组合或合并回到开发的主干。当这种情况出现时 --它可能在大型的或长期的项目中重复出现 --确定合并出现的点是另一个创建一个标记的原因。

为了标记项目文件,请键入:

cvs tag unique_tag_name

你的标记名可以是一个发布名或日期,一个产品版本标识符,或你的任何选择。

为了创建一个分支,请键入:

cvs tag -b unique_tag_name

分流和标记是需要许多考虑和选择的复杂话题。你可以在下面的资源中找到更全面的信息和说明:
顶部 | 帮助索引

 » 相关连接:
LINUX下CVS服务器的配置 cvs基本概念 cvs服务器配置 CVS的常用命令速查手册
cvs常用标记说明 CVS学习笔记 cvs完全手册 cvs 进行一次典型的工作会话
CVS 命令快速参考 cvs服务器端配置/客户端使用 CVS常用操作
 » 本栏目最新帖:

Powered by PHPWind v6.0 Code © 2003-08