- 语法: 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,了解完整的信息):
-
使用不迟于
date 的最新修订版。该选项是粘性的,也就是 `
-P'。参阅
Sticky tags,了解更多粘性标签/日期的信息。
-
只与 `
-D' 或 `
-r' 标识一起使用。如果找不到匹配的修订版,将使用最新的修订版(而不是忽略文件)。
-
根据
kflag 处理关键字。参阅
Keyword substitution。此选项是粘性的; 以后在这个工作目录里面更新,还是使用相同的
kflag。
status
命令可以看到粘性的选项。参阅 Invoking CVS,了解status
命令的信息。
-
只在当前工作目录里面执行。
-
不运行任何检出程序(如同在模块文件里面指定 `
-o' 选项; 参阅
modules)。
-
清除空目录。参阅
Moving directories。
-
管道方式输出到标准输出。
-
递归方式检出。此选项是默认的。
- 使用 tag 修订版,或者当 date 指定,并且 tag 是分支标签, tag 分支上的版本当作存在于 date 上。此选项是粘性的,含 ` -P'。参阅 Sticky tags,了解更多粘性标签/日期的信息。以及 Common options。
-D
date
-f
-k
kflag
-l
-n
-P
-p
-R
-r
tag
[:
date
]
除了这些,你还可以在 checkout
里面使用特殊的命令选项:
-
重置任何的粘性标签,日期,或 `
-k' 选项。参阅
Sticky tags,了解更多粘性标签/日期的信息。
-
复制模块文件,排序,输出到标准输出,而不是在工作目录里面创建和修改文件与目录。
-
为工作文件创建名为
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' 选项,合并第一个 `
-j' 选项至第二个 `
-j' 之间修订版间的修改到工作目录。
使用一个 `-j' 选项,合并祖先修订版至 `-j' 选项指定的修订版间的修改到工作目录。祖先修订版是所基于的工作目录和 `-j' 选项指定的修订版的共同祖先。
另外,每个 -j 选项可以包含可选的日期规格,当与分支使用时,可以限定在指定日期内选择修订版。可选的日期由标签中增加的 (:) 分号指定: `-jSymbolic_Tag:Date_Specifier'。
-
只与 `
-d dir' 一起使用。采用这个选项,
cvs 在检出单独模块时,将不再“缩短”工作目录里面的模块路径。参阅 `
-d' 标识中的例子和讨论。
- 类似 ` -c',但包含所有模块的状态,并按状态字符串排序。参阅 modules, 了解 ` -s' 选项的信息,它用在模块文件里面设置模块状态。
-A
-c
-d
dir
-j
tag
-N
-s
checkout 示例
获得模块 `tc' 的副本:
$ cvs checkout tc
获得一天以前 `tc' 模块的副本:
$ cvs checkout -D yesterday tc