- 需要: 倉庫,工作目錄。
- 修改: 倉庫。
- 同義詞: rcs
本命令是配合管理功能的 cvs 接口。這其中的一些功能被質疑是否有用,但因爲歷史的緣故還保留着。將來也許會去掉這些有問題的選項。此命令具備遞歸特性,所以使用的時候要特別小心。
在 unix 系統中,如果有一個組名爲 cvsadmin
,則只有該組的成員可以執行 cvs admin
命令,除非在 CVSROOT/config 裏面規定 UserAdminOptions
配置選項。指定 UserAdminOptions
選項後,任何用戶都能執行此命令。參考 config 瞭解有關 UserAdminOptions
的詳細情況。
cvsadmin
組應該存在於服務器端,或者是任何非客戶機/服務器的 cvs 上。爲了禁止所有用戶使用 cvs admin
,可創建一個無成員的組。在 NT 系統上,並不存在 cvsadmin
特性,因此所有用戶都可以執行 cvs admin
命令。
admin 選項
這裏面的一些選項雖然被質疑是否有用,但由於歷史原因仍然保留。其中一些甚至造成 cvs 無法使用,除非你恢復到原狀!
-A
oldfile- 可能無法用在 cvs。追加 oldfile 的存取列表到 rcs 文件的存取列表。
-a
logins- 可能無法用在 cvs。追加登錄名到 rcs 文件存取列表的 logins 列表,由逗號分隔。
-b[
rev]
- 設置默認分支爲 rev。在 cvs 中,你不應該手動修改默認分支;採用粘性標籤 (參閱 Sticky tags)決定工作分支是更佳的方式。有一種情況需要使用
cvs admin -b
命令:當使用第三方分支時,有需要回復到他們的版本 (參閱 Reverting local changes)。在 `-b' 和它的參數之間可以沒有空格。 -c
string- 設置註釋頭爲 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)。 -k
subst- 設置默認的關鍵字替換爲 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' 選項所述。
-m
rev:
msg- 用 msg 替換日誌信息中的 rev。
-N
name[:[
rev]]
- 與 `-n' 類似,除了可以覆蓋以前設置的 name。瞭解如何使用魔術分支,參閱 Magic branch numbers,瞭解魔術分支的使用。
-n
name[:[
rev]]
- 將符號名 name 與分支或修訂版 rev 關聯。通常採用 `cvs tag' 或 `cvs rtag' 命令更佳。如果沒有 `:' 和 rev,則刪除符號名; 否則如果符號名 name 已經存在,將會打印錯誤信息。如果 rev 是符號名,則擴展之前的關聯。rev 由分支號和 `.' 組成,表示當前分支的最新修訂版。 `:' 和空的 rev 表示默認版本的最新修訂版,通常指主幹。例如, `cvs admin -nname:' 將 name 關聯到所有 RCS 文件的當前最新修訂版; 對比 `cvs admin -nname:$',它是將 name 關聯到解開的關鍵字對應的工作文件修訂版。
-o
range- 刪除 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
- 安靜地運行;不打印任何調試信息。
-s
state[:
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' 和它的參數之間可以沒有空格。 -V
n- 在以前的 cvs 中,這個選項可以將 rcs 版本 n 寫到 rcs 文件,但現在已經廢止,指定將產生錯誤。
-x
suffixes- 在以前的 cvs 中,文檔說明使用這種方法指定 rcs 文件名。然而,cvs 要求一直使用以 `,v' 結束的 rcs 文件,所以,這個選項也不再有意義。