上层: admin


A.7.1 admin 选项

这里面的一些选项虽然被质疑是否有用,但由于历史原因仍然保留。 其中一些甚至造成 cvs 无法使用,除非你恢复到原状!

-Aoldfile
可能无法用在 cvs。追加 oldfile 的存取列表到 rcs 文件的存取列表。
-alogins
可能无法用在 cvs。追加登录名到 rcs 文件存取列表的 logins 列表, 由逗号分隔。
-b[rev]
设置默认分支为 rev。在 cvs 中,你不应该手动修改默认分支;采用粘性标签 (参阅 Sticky tags)决定工作分支是更佳的方式。有一种情况需要使用 cvs admin -b 命令:当使用第三方分支时,有需要回复到他们的版本 (参阅 Reverting local changes)。在 `-b' 和它的参数之间可以没有空格。


-cstring
设置注释头为 string。注释头在当前的 cvsrcs 5.7 版本中不在使用。 你可以不用理它。参阅 Keyword substitution.
-e[logins]
可能无法用在 cvs。从 RCS 文件的存取列表 logins 列表中删除登录名, 由逗号分隔。如果不指定 logins,删除整个存取列表。在 `-e' 和它的参数 之间可以没有空格。
-I
交互式执行,即使标准输入并不是一个终端。该选项于 cvs 客户机/服务器方式下无效, 并将在以后的 cvs 中去掉。
-i
cvs 无用。它用来创建和初始化新的 rcs 文件,并不设置版本。 对于 cvs,添加文件使用 cvs add 命令 (参阅 Adding files)。
-ksubst
设置默认的关键字替换为 subst。 参阅 Keyword substitution. 在 cvs updatecvs exportcvs checkout 命令中可以使用 `-k' 选项覆盖此默认值。
-l[rev]
锁定修订版号为 rev。如果指定的是分支,则锁定该分支最后的修订版。如果没有 rev,则锁定默认分支的最新修订版本。在 `-l' 和它的参数之间可以没有空格。

它与 rcslock.pl 脚本配合使用,该脚本位于 cvs 源码发行版的 contrib 目录,用来提供限制检出(一个文件只允许一个用户同时修改)。 查看脚本的注释了解更多信息(并参阅该目录中 README 关于不支持特性的无责声明)。 据注释所说,锁定必须设置为 strict(此为默认)。

-L
设置锁定为 strict。strict 锁定意思是说,RCS 文件的主人也不能免除锁定而提交。 cvs 使用时,必须设置 strict 锁定;参阅上面的 `-l' 选项所述。


-mrev:msg
msg 替换日志信息中的 rev
-Nname[:[rev]]
与 `-n' 类似,除了可以覆盖以前设置的 name。了解如何使用魔术分支, 参阅 Magic branch numbers,了解魔术分支的使用。
-nname[:[rev]]
将符号名 name 与分支或修订版 rev 关联。通常采用 `cvs tag' 或 `cvs rtag' 命令更佳。如果没有 `:' 和 rev,则删除符号名; 否则如果符号名 name 已经存在,将会打印错误信息。如果 rev 是符号名, 则扩展之前的关联。rev 由分支号和 `.' 组成,表示当前分支的最新修订版。 `:' 和空的 rev 表示默认版本的最新修订版,通常指主干。例如, `cvs admin -nname:' 将 name 关联到所有 RCS 文件的当前最新修订版; 对比 `cvs admin -nname:$',它是将 name 关联到解开的关键字对应 的工作文件修订版。


-orange
删除 range 指定的(outdates)修订版。

注意,在你明确你在做什么之前(例如查看了下面的有关 rev1:rev2 语法困惑警告),该命令是非常危险的。

如果你磁盘空间不够,该选项可以提供帮助。但用之前请三思 – 这将无法依靠备份取消 这个命令! 如果你错删了修订版,即使是出错或(但愿不是) cvs bug 造成的, 除了删除修订版,没有可能修复。或许先在仓库的复制版上进行实验是个好主意。

指定 range 可以采用以下的方式:

rev1::rev2
清除 rev1 和 rev2 之间的所有版本,那么 cvs 将只保存 rev1 和 rev2 之间的差别, 而无中间状态。例如,执行 `-o 1.3::1.5' 之后,只能得到 1.3 和 1.5 修订版, 或者 1.3 和 1.5 之间的差异,但无法获得 1.4 或 1.3 和 1.4 之间的差异。另一个例子: `-o 1.3::1.4' 和 `-o 1.3::1.3' 没有任何效果,这是因为它们没有中间状态 可以删除。
::rev
清除含 REV 的分支从开始到 rev 之间的修订版。分支点和 rev 则保留。 例如,`-o ::1.3.2.6' 删除 1.3.2.1 和 1.3.2.5 修订版和它们之间的所有修订版, 但保留 1.3 和 1.3.2.6。
rev::
清除 rev 和包含 rev 分支最后的修订版。rev 修订版保留, 但最新修订版删除。
rev
删除 rev 修订版。例如,`-o 1.3' 等于 `-o 1.2::1.4'。
rev1:rev2
删除 rev1rev2 之间的修订版,包括同一个分支。以后将无法获取 rev1rev2 以及之间的修订版。例如,`cvs admin -oR_1_01:R_1_02 .' 很少使用。意思是删除修订版到标签 R_1_02,并含标签。但要当心! 如果文件在 R_1_02 和 R_1_03 之间没有修改,那么它们具有相同的数字修订版号赋于标签 R_1_02 和 R_1_03。 于是不仅无法获得 R_1_02; R_1_03 也不得不要从磁带上恢复! 在大多数情况下, 你应该指定 rev1::rev2
:rev
删除含 rev 的分支从开始到 rev,并包括 rev
rev:
删除从 rev 修订版,包含 rev 自己,到含 rev 分支的结尾。

含有分支或锁定的修订版将不会被删除。

如果修订版包含符号名,并且指定 `::' 语法,cvs 将给出错误信息并不删除 任何修订版。如果您的确想删除符号名和修订版,首先用 cvs tag -d 删除符号名, 然后执行 cvs admin -o。如果指定不含 `::' 的语法,那么 cvs 将删除修订版,但保留含符号名指向不存在的修订版。该特性是为与以前的 cvs 版本兼容,但由于没什么用处,将来可能会改成类似 `::' 方式。

对于因 cvs 不能处理 rev 为分支的符号名。参阅 Magic branch numbers, 了解详细情况。

确保你要处理的过期修订版没有被人检出。如果有人试图编辑,并尝试提交,会出现一些 奇怪的事情。正因如此,该选项不适合撤消假提交; 而使用提交新修订版替代撤消假修改 (参阅 Merging two revisions)。

-q
安静地运行;不打印任何调试信息。
-sstate[:rev]
cvs 下很有用。为 rev 修订版设置状态为 state。如果 rev 是分支号,则假定是该分支的最新版本。如果 rev 省略,假定是默认 分支的最新版本。state 可以使用任何标识。常用的有 `Exp'(实验), `Stab'(稳定),`Rel'(发行)。新的修订版创建时默认使用 `Exp' 标识。 从 cvs log (参阅 log)的输出,以及 `$Log$' 和 `$State$' 关键字(参阅 Keyword substitution)中可以看到 状态。注意,cvs 内部使用 dead 状态;对文件设置或取消 dead 状态应该采用诸如 cvs removecvs add 命令,而不是 cvs admin -s
-t[file]
cvs 下很有用。将名为 file 的文件内容写到 RCS 文件的描述中,删除 以前的文字。file 路径名不能以 `-' 开头。描述文件可以从 `cvs log' (参阅 log) 的输出中看到。在 `-t' 和它的参数之间可以没有空格。

如果省略 file,描述文字将从标准输入获得,以 end-of-file 或 `.' 行结束。 如果是交互式,则有相关提示;参阅 `-I'。

-t-string
与 `-tfile' 类似。将 string 写入 rcs 文件的描述文字, 删除已有的文字。在 `-t' 和它的参数之间可以没有空格。
-U
设置锁定为 non-strict。non-stric 锁定意味着文件的所有者不必锁定修订版来提交。 在 cvs 下使用 strict 锁定必须设置;参阅上面的 `-l' 选项。
-u[rev]
参阅上面的 `-l' 选项中关于 cvs 中使用的说明。为 rev 修订版解锁。 如果给定的是分支,为分支的最新修订版解锁。如果省略 rev,删除设置人的最新锁。 通常,只有加锁的人才能解锁;如果其他人也解锁会打破锁的作用。这将发送一个 commit 通知给加锁的人(参阅 Getting Notified)。在 `-u' 和它的参数 之间可以没有空格。
-Vn
在以前的 cvs 中,这个选项可以将 rcs 版本 n 写到 rcs 文件, 但现在已经废止,指定将产生错误。
-xsuffixes
在以前的 cvs 中,文档说明使用这种方法指定 rcs 文件名。然而,cvs 要求一直使用以 `,v' 结束的 rcs 文件,所以,这个选项也不再有意义。