- 需要: 仓库,工作目录。
- 修改: 仓库。
- 同义词: rcs
本命令是配合管理功能的 cvs 接口。这其中的一些功能被质疑是否有用,但因为历史的缘故还保留着。将来也许会去掉这些有问题的选项。此命令具备递归特性,所以使用的时候要特别小心。
在 unix 系统中,如果有一个组名为 cvsadmin
,则只有该组的成员可以执行 cvs admin
命令,除非在 CVSROOT/config 里面规定 UserAdminOptions
配置选项。指定 UserAdminOptions
选项后,任何用户都能执行此命令。参考 config 了解有关 UserAdminOptions
的详细情况。
cvsadmin
组应该存在于服务器端,或者是任何非客户机/服务器的 cvs 上。为了禁止所有用户使用 cvs admin
,可创建一个无成员的组。在 NT 系统上,并不存在 cvsadmin
特性,因此所有用户都可以执行 cvs admin
命令。
admin 选项
这里面的一些选项虽然被质疑是否有用,但由于历史原因仍然保留。其中一些甚至造成 cvs 无法使用,除非你恢复到原状!
-
可能无法用在
cvs。追加
oldfile 的存取列表到
rcs 文件的存取列表。
-
可能无法用在
cvs。追加登录名到
rcs 文件存取列表的
logins 列表,由逗号分隔。
-
设置默认分支为
rev。在
cvs 中,你不应该手动修改默认分支;采用粘性标签 (参阅
Sticky tags)决定工作分支是更佳的方式。有一种情况需要使用
cvs admin -b
命令:当使用第三方分支时,有需要回复到他们的版本 (参阅 Reverting local changes)。在 ` -b' 和它的参数之间可以没有空格。 -
设置注释头为
string。注释头在当前的
cvs 和
rcs 5.7 版本中不在使用。你可以不用理它。参阅
Keyword substitution.
-
可能无法用在
cvs。从 RCS 文件的存取列表
logins 列表中删除登录名,由逗号分隔。如果不指定
logins,删除整个存取列表。在 `
-e' 和它的参数之间可以没有空格。
-
交互式执行,即使标准输入并不是一个终端。该选项于
cvs 客户机/服务器方式下无效,并将在以后的
cvs 中去掉。
-
对
cvs 无用。它用来创建和初始化新的
rcs 文件,并不设置版本。对于
cvs,添加文件使用
cvs add
命令 (参阅 Adding files)。
-
设置默认的关键字替换为
subst。 参阅
Keyword substitution. 在
cvs update
,cvs export
或cvs checkout
命令中可以使用 ` -k' 选项覆盖此默认值。
-
锁定修订版号为
rev。如果指定的是分支,则锁定该分支最后的修订版。如果没有
rev,则锁定默认分支的最新修订版本。在 `
-l' 和它的参数之间可以没有空格。
它与 rcslock.pl 脚本配合使用,该脚本位于 cvs 源码发行版的 contrib 目录,用来提供限制检出(一个文件只允许一个用户同时修改)。查看脚本的注释了解更多信息(并参阅该目录中 README 关于不支持特性的无责声明)。据注释所说,锁定必须设置为 strict(此为默认)。
- 设置锁定为 strict。strict 锁定意思是说,RCS 文件的主人也不能免除锁定而提交。 cvs 使用时,必须设置 strict 锁定;参阅上面的 ` -l' 选项所述。
-
用
msg 替换日志信息中的
rev。
-
与 `
-n' 类似,除了可以覆盖以前设置的
name。了解如何使用魔术分支,参阅
Magic branch numbers,了解魔术分支的使用。
- 将符号名 name 与分支或修订版 rev 关联。通常采用 ` cvs tag' 或 ` cvs rtag' 命令更佳。如果没有 ` :' 和 rev,则删除符号名; 否则如果符号名 name 已经存在,将会打印错误信息。如果 rev 是符号名,则扩展之前的关联。 rev 由分支号和 ` .' 组成,表示当前分支的最新修订版。 ` :' 和空的 rev 表示默认版本的最新修订版,通常指主干。例如, ` cvs admin -nname:' 将 name 关联到所有 RCS 文件的当前最新修订版; 对比 ` cvs admin -nname:$',它是将 name 关联到解开的关键字对应的工作文件修订版。
-
删除
range 指定的(
outdates)修订版。
注意,在你明确你在做什么之前(例如查看了下面的有关 rev1:rev2 语法困惑警告),该命令是非常危险的。
如果你磁盘空间不够,该选项可以提供帮助。但用之前请三思 – 这将无法依靠备份取消这个命令! 如果你错删了修订版,即使是出错或(但愿不是) cvs bug 造成的,除了删除修订版,没有可能修复。或许先在仓库的复制版上进行实验是个好主意。
指定 range 可以采用以下的方式:
-
rev1
-
清除 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 则保留。例如,`
-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
-
删除
rev1 到
rev2 之间的修订版,包括同一个分支。以后将无法获取
rev1 或
rev2 以及之间的修订版。例如,`
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 分支的结尾。
::
rev2::
rev::
:
rev2:
rev:
含有分支或锁定的修订版将不会被删除。
如果修订版包含符号名,并且指定 `::' 语法,cvs 将给出错误信息并不删除任何修订版。如果您的确想删除符号名和修订版,首先用
cvs tag -d
删除符号名,然后执行cvs admin -o
。如果指定不含 `::' 的语法,那么 cvs 将删除修订版,但保留含符号名指向不存在的修订版。该特性是为与以前的 cvs 版本兼容,但由于没什么用处,将来可能会改成类似 `::' 方式。对于因 cvs 不能处理 rev 为分支的符号名。参阅 Magic branch numbers, 了解详细情况。
确保你要处理的过期修订版没有被人检出。如果有人试图编辑,并尝试提交,会出现一些奇怪的事情。正因如此,该选项不适合撤消假提交; 而使用提交新修订版替代撤消假修改 (参阅 Merging two revisions)。
-
清除 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' 没有任何效果,这是因为它们没有中间状态可以删除。
-
安静地运行;不打印任何调试信息。
-
在
cvs 下很有用。为
rev 修订版设置状态为
state。如果
rev 是分支号,则假定是该分支的最新版本。如果
rev 省略,假定是默认分支的最新版本。
state 可以使用任何标识。常用的有 `
Exp'(实验), `
Stab'(稳定),`
Rel'(发行)。新的修订版创建时默认使用 `
Exp' 标识。从
cvs log (参阅
log)的输出,以及 `
$Log$' 和 `
$State$' 关键字(参阅
Keyword substitution)中可以看到状态。注意,
cvs 内部使用
dead
状态(参阅 Attic);对文件设置或取消dead
状态应该采用诸如cvs remove
和cvs add
命令(参阅 Adding and removing),而不是cvs admin -s
。
-
在
cvs 下很有用。将名为
file 的文件内容写到 RCS 文件的描述中,删除以前的文字。
file 路径名不能以 `
-' 开头。描述文件可以从 `
cvs log' (参阅
log) 的输出中看到。在 `
-t' 和它的参数之间可以没有空格。
如果省略 file,描述文字将从标准输入获得,以 end-of-file 或 `.' 行结束。如果是交互式,则有相关提示;参阅 `-I'。
-
与 `
-tfile' 类似。将
string 写入
rcs 文件的描述文字,删除已有的文字。在 `
-t' 和它的参数之间可以没有空格。
-
设置锁定为 non-strict。non-stric 锁定意味着文件的所有者不必锁定修订版来提交。在
cvs 下使用 strict 锁定必须设置;参阅上面的 `
-l' 选项。
-
参阅上面的 `
-l' 选项中关于
cvs 中使用的说明。为
rev 修订版解锁。如果给定的是分支,为分支的最新修订版解锁。如果省略
rev,删除设置人的最新锁。通常,只有加锁的人才能解锁;如果其他人也解锁会打破锁的作用。这将发送一个
commit
通知给加锁的人(参阅 Getting Notified)。在 ` -u' 和它的参数之间可以没有空格。
-
在以前的
cvs 中,这个选项可以将
rcs 版本
n 写到
rcs 文件,但现在已经废止,指定将产生错误。
- 在以前的 cvs 中,文档说明使用这种方法指定 rcs 文件名。然而, cvs 要求一直使用以 ` ,v' 结束的 rcs 文件,所以,这个选项也不再有意义。
-A
oldfile
-a
logins
-b[
rev
]
-c
string
-e[
logins
]
-I
-i
-k
subst
-l[
rev
]
-L
-m
rev
:
msg
-N
name
[:[
rev
]]
-n
name
[:[
rev
]]
-o
range
-q
-s
state
[:
rev
]
-t[
file
]
-t-
string
-U
-u[
rev
]
-V
n
-x
suffixes