`
yanwenhan
  • 浏览: 114805 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

checkout—检出用于编辑的源码

    博客分类:
  • CVS
阅读更多
  • 语法: checkout [options] modules...
  • 需要: 仓库。
  • 修改: 工作目录。
  • 同义词: co, get

创建或更新 modules 指定的工作目录,包含源码副本。使用大多数其他 cvs 命令之前,你必须执行 checkout,这是因为它们大部分操作的是工作目录。

modules 可以是源码目录和文件集合的符号名,或者目录路径,或仓库里面的文件。符号名在 `modules' 文件里面定义。参阅 modules. <!----><!----><!----><!----><!----><!---->

随你指定的模块,checkout 可以递归地创建目录,并将适当的文件放在里面。你可以在任意时间编辑这些文件(不论是否其他的开发人员也在编辑他们自己的副本); 更新它们以包括源码仓库中其他人员提交的修改; 或将你的修改永久地提交到源码仓库。

注意,checkout 用于创建目录。在 checkout 执行的目录,总会创建顶级目录,而且通常与指定的模块同名。在 module alias 情况下,创建的子目录也许有不同的名字,但可以肯定它是一个子目录,并且 checkout 会在解到你私人工作空间时,显示出每个文件的相对路径(除非你指定了 `-Q' 全局选项)。

checkout 建立的文件属性是可读写的,除非事先给 CVS 指定 `-r' 选项 (参阅 Global options),或 CVSREAD 环境变量 (参阅 Environment variables),或者该文件已被监视(参阅 Watches)。

注意,在一个已经由 checkout 建立的目录里面运行 checkout 目录是允许的。这类似给 update 指定 `-d' 选项,使得新目录可以在工作区内创建。但 checkout 使用的是模块名,而 update 使用目录名。还有, checkout 要在顶级目录使用这种方式(以前使用 checkout 的目录),所以,在用 checkout 更新已有目录前,别忘了将目录改到顶级目录。

关于 checkout 命令的输出,见 update output

 

checkout 选项

这些是 checkout 支持的标准选项(参阅 Common options,了解完整的信息):

-D date
使用不迟于 date 的最新修订版。该选项是粘性的,也就是 `-P'。参阅 Sticky tags,了解更多粘性标签/日期的信息。
-f
只与 `-D' 或 `-r' 标识一起使用。如果找不到匹配的修订版,将使用最新的修订版(而不是忽略文件)。
-k kflag
根据 kflag 处理关键字。参阅 Keyword substitution。此选项是粘性的; 以后在这个工作目录里面更新,还是使用相同的 kflagstatus 命令可以看到粘性的选项。参阅 Invoking CVS,了解 status 命令的信息。
-l
只在当前工作目录里面执行。
-n
不运行任何检出程序(如同在模块文件里面指定 `-o' 选项; 参阅 modules)。
-P
清除空目录。参阅 Moving directories
-p
管道方式输出到标准输出。
-R
递归方式检出。此选项是默认的。
-r tag[:date]
使用 tag 修订版,或者当 date 指定,并且 tag 是分支标签, tag 分支上的版本当作存在于 date 上。此选项是粘性的,含 `-P'。参阅 Sticky tags,了解更多粘性标签/日期的信息。以及 Common options

除了这些,你还可以在 checkout 里面使用特殊的命令选项:

-A
重置任何的粘性标签,日期,或 `-k' 选项。参阅 Sticky tags,了解更多粘性标签/日期的信息。
-c
复制模块文件,排序,输出到标准输出,而不是在工作目录里面创建和修改文件与目录。
-d dir
为工作文件创建名为 dir 的目录,而不是使用模块名。通常,使用此标识等同于使用 `mkdir dir; cd dir',然后是不带 `-d' 标识的检出命令。

然而,有一个重要的例外。习惯上,检出单独的项目只输出到一个目录而不会包含中间空的目录。在这种情况下,cvs 尽力“缩短”路径名,避免空目录。

例如,模块 `foo' 包含 `bar.c'.c' 文件, `cvs co -d dir foo' 命令将建立 `dir' 目录并将 `bar.c' 文件放在里面。同样,模块 `bar' 里面有 `baz' 子目录,其中有一个文件 `quux.c'.c', `cvs co -d dir bar/baz' 将创建 `dir' 目录,并将 `quux.c' 放在里面。

使用 `-N' 标识将破坏这种行为。使用上面相同的模块,`cvs co -N -d dir foo' 将建立 `dir/foo' 目录并放入 `bar.c' 文件,使用 `cvs co -N -d dir bar/baz' 将建立 `dir/bar/baz' 目录并将 `quux.c' 放在里面。

-j tag
用两个 `-j' 选项,合并第一个 `-j' 选项至第二个 `-j' 之间修订版间的修改到工作目录。

使用一个 `-j' 选项,合并祖先修订版至 `-j' 选项指定的修订版间的修改到工作目录。祖先修订版是所基于的工作目录和 `-j' 选项指定的修订版的共同祖先。

另外,每个 -j 选项可以包含可选的日期规格,当与分支使用时,可以限定在指定日期内选择修订版。可选的日期由标签中增加的 (:) 分号指定: `-jSymbolic_Tag:Date_Specifier'。

参阅 Branching and merging.

-N
只与 `-d dir' 一起使用。采用这个选项,cvs 在检出单独模块时,将不再“缩短”工作目录里面的模块路径。参阅 `-d' 标识中的例子和讨论。
-s
类似 `-c',但包含所有模块的状态,并按状态字符串排序。参阅 modules, 了解 `-s' 选项的信息,它用在模块文件里面设置模块状态。

 

checkout 示例

获得模块 `tc' 的副本:

     $ cvs checkout tc

获得一天以前 `tc' 模块的副本:

     $ cvs checkout -D yesterday tc
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics