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。註釋頭在當前的 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 狀態(參閱 Attic);對文件設置或取消 dead 狀態應該採用諸如 cvs removecvs 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 文件,所以,這個選項也不再有意義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章