10.7.7. CVS 工作流

这里有一个 CVS 典型工作流的例子。

按如下所示查看 “$CVSROOT“ 所指的 CVS 项目上所有可用的模块。

  1. $ cvs rls
  2. CVSROOT
  3. module1
  4. module2
  5. ...

按如下所示签出 “module1“ 到默认的目录 “./module1“。

  1. $ cd ~/path/to
  2. $ cvs co module1
  3. $ cd module1

按需修改里面的内容。

通过如下所示的命令来检查改变,其作用相当于使用 “diff -u [repository] [local]“。

  1. $ cvs diff -u

你发现自己改坏了 “file_to_undo“ 文件,而其他的文件都是好的。

按如下所示用 CVS 中的原始副本覆盖 “file_to_undo“ 文件。

  1. $ cvs up -C file_to_undo

按如下所示把更新了的本地源目录树保存到 CVS。

  1. $ cvs ci -m "Describe change"

按如下创建并添加 “file_to_add“ 文件到 CVS。

  1. $ vi file_to_add
  2. $ cvs add file_to_add
  3. $ cvs ci -m "Added file_to_add"

按如下所示合并 CVS 中的最新版本。

  1. $ cvs up -d

当心以 “C filename“ 开头的行,这意味着冲突的改变。

查看 “.#filename.version“ 中未经修改的代码。

查找文件中的 “<<<<<<<“ 和 “>>>>>>>“ 来获得冲突的改变的信息。

按需更改文件来解决冲突。

按如下所示添加一个发布标签 “Release-1“。

  1. $ cvs ci -m "last commit for Release-1"
  2. $ cvs tag Release-1

继续编辑文件。

按如下所示移除发布分支 “Release-1“。

  1. $ cvs tag -d Release-1

按如下所示把改变签入到 CVS。

  1. $ cvs ci -m "real last commit for Release-1"

按如下所示给已经更新了的 CVS 主干中的 HEAD 重新添加 “Release-1“ 发布标签。

  1. $ cvs tag Release-1

按如下所示从 “Release-initial“ 标签指向的初始版本中创建一个带有粘性标签的 “Release-initial-bugfixes“ 分支,并把它签出到 “~/path/to/old“ 目录。

  1. $ cvs rtag -b -r Release-initial Release-initial-bugfixes module1
  2. $ cd ~/path/to
  3. $ cvs co -r Release-initial-bugfixes -d old module1
  4. $ cd old
[提示]提示

使用 “-D 2005-12-20“ (ISO 8601 日期格式) 而不是 “-r Release-initial“ 来指定某个特定日期作为分支点。

在基于原始版本的有 “Release-initial-bugfixes“ 粘性标签的本地源目录树上工作。

独自在 “Release-initial-bugfixes“ 分支上工作…直到有其他人加入到此分支。

当要创建新的目录时,按如下所示同步其他人在此分支上对文件所做的修改。

  1. $ cvs up -d

按需更改文件来解决冲突。

按如下所示把改变签入到 CVS。

  1. $ cvs ci -m "checked into this branch"

按如下所示更新本地目录树为主干的最新版本,同时移除粘性标签 (“-A“) 并且不使用关键字扩展 (“-kk“)。

  1. $ cvs up -d -kk -A

按如下所示通过合并 “Release-initial-bugfixes“ 分支并且不使用关键字扩展的方式来更新本地目录树 (内容为主干中的最新版本)。

  1. $ cvs up -d -kk -j Release-initial-bugfixes

用编辑器来解决冲突。

按如下所示把改变签入到 CVS。

  1. $ cvs ci -m "merged Release-initial-bugfixes"

按如下所示创建归档。

  1. $ cd ..
  2. $ mv old old-module1-bugfixes
  3. $ tar -cvzf old-module1-bugfixes.tar.gz old-module1-bugfixes
  4. $ rm -rf old-module1-bugfixes
[提示]提示

cvs up“ 命令能够使用 “-d“ 选项来创建新目录并且可以使用 “-P“ 选项来删除空目录。

[提示]提示

你可以通过形如 “cvs co module1/subdir“ 这样的列出其名的方式,来签出 “module1“ 的一个子目录。

表 10.14. 值得注意的 CVS 命令选项 (用作 cvs(1) 的第一个选项)

选项说明
-n测试,没有影响
-t显示 cvs 活动步骤的信息