admin–管理
关键字: cvs admin–管理- 需要: 仓库,工作目录。
- 修改: 仓库。
- 同义词: rcs
本命令是配合管理功能的 cvs 接口。这其中的一些功能被质疑是否有用,但因为历史的缘故还保留着。将来也许会去掉这些有问题的选项。此命令具备递归特性,所以使用的时候要特别小心。
在 unix 系统中,如果有一个组名为 cvsadmin,则只有该组的成员可以执行 cvs admin 命令,除非在 CVSROOT/config 里面规定 UserAdminOptions 配置选项。指定 UserAdminOptions 选项后,任何用户都能执行此命令。参考 config 了解有关 UserAdminOptions 的详细情况。
cvsadmin 组应该存在于服务器端,或者是任何非客户机/服务器的 cvs 上。为了禁止所有用户使用 cvs admin,可创建一个无成员的组。在 NT 系统上,并不存在 cvsadmin 特性,因此所有用户都可以执行 cvs admin 命令。
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。注释头在当前的 cvs 和 rcs 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 update,cvs export或cvs 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 - 删除 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 自己,到含 rev 分支的结尾。
含有分支或锁定的修订版将不会被删除。
如果修订版包含符号名,并且指定 `::' 语法,cvs 将给出错误信息并不删除任何修订版。如果您的确想删除符号名和修订版,首先用
cvs tag -d删除符号名,然后执行cvs admin -o。如果指定不含 `::' 的语法,那么 cvs 将删除修订版,但保留含符号名指向不存在的修订版。该特性是为与以前的 cvs 版本兼容,但由于没什么用处,将来可能会改成类似 `::' 方式。对于因 cvs 不能处理 rev 为分支的符号名。参阅 Magic branch numbers, 了解详细情况。
确保你要处理的过期修订版没有被人检出。如果有人试图编辑,并尝试提交,会出现一些奇怪的事情。正因如此,该选项不适合撤消假提交; 而使用提交新修订版替代撤消假修改 (参阅 Merging two revisions)。
- rev1
-q- 安静地运行;不打印任何调试信息。
-sstate[:rev]- 在 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。
-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 文件,所以,这个选项也不再有意义。







评论排行榜