http://fedora.gro.clinux.org/docs/documentation-guide-zh_CN/sn-cvs-cvscommands.html
配置好系統的 CVS 訪問之後,檢出要處理的模塊。
技巧 | |
---|---|
關於是否需要設置 如果有 |
您只需檢出模塊一次。當一個模塊檢出到本地之後,它就一直在那兒了。
要檢出一個模塊,執行下面的命令:
$
cvs co
<module-name>
例如,要檢出 example-tutorial
模塊,先進入工作目錄,然後執行下面的命令:
$
cvs co example-tutorial
當前目錄下將新建一個名字是 example-tutorial/
的子目錄。
如果檢出模塊時沒有指定分支名稱,默認就是 CVS 中模塊的 HEAD 分支。
可以將 CVS 分支視爲一篇手冊的某個版本,或是一個文件的不同版本。
要檢出模塊的分支,運行下面的命令:
$
cvs co
-d
<directory>
-r
<branchname>
<module-name>
將創建名爲 <directory>
的目錄, 模塊 <module-name>
的 <branchname>
分支的文件將被複制到這個目錄中。
例如,要檢出 mymodule
模塊的 BRANCH-VERSION-1.2 分支,運行命令:
$
cvs co -d mymodule-1.2 -r BRANCH-VERSION-1.2 mymodule
模塊的 BRANCH-VERSION-1.2 分支將被檢出到 mymodule-1.2
目錄中。
要查看文件有哪些分支和標記,運行命令:
$
cvs status
-v
<filename>
例如,文件 foo.sgml
的狀態如下:
===================================================================
File: foo.sgml Status: Up-to-date
Working revision: 1.47
Repository revision: 1.47 /cvs/docs/custom-guide/rhl-cg-en.sgml,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
BRANCH-VERSION-1.2 (branch: 1.25.2)
只有在 Existing Tags
(現有標記)中顯示爲"分支"的標記纔可以作爲分支檢出。
要獲取模塊中文件的最新版本,切換到包含模塊文件的目錄,執行命令:
$
cvs update
模塊所有文件的最新版本將下載到本地。如果您看到了文件衝突提示,請參考 第 10.4.8 節 “解決衝突” 。
在本地修改模塊的文件之後,將它們提交,以在 CVS 服務器上保存更改:
$
cvs commit
-m
"some log message
"filename
注意 | |
---|---|
如果您想用喜歡的文本編輯器來撰寫日誌信息,並且已經定義了 $VISUAL 或 $EDITOR 環境變量,就可以忽略 |
日誌信息應當儘可能有描述性,這樣您和共同作者都可以瞭解做過了哪些修改。如果日誌消息是 updated some files
(更新了一些文件),那它無法描述修改了什麼,將來對您毫無用處。如果您修正了一個錯誤,應當包含 Bugzilla
引用。
<filename>
可以是一個文件名,一系列以空格分隔的文件名,或者一組以通配符指定的文件名,類似 *.png
或 foo-*.sgml
。
如果在 commit
命令中沒有給出文件名或通配符,所有修改都會被提交到服務器。這個命令是遞歸的,模塊中任何子目錄的修改也都會被提交。不帶文件名執行 commit
命令時要小心,因爲您可能不記得改過了什麼。
如果您看到了文件衝突,請參考 第 10.4.8 節 “解決衝突” 。
要向模塊添加文件,在本地目錄中創建這個文件,然後執行下面的命令:
$
cvs add
file-to-add
添加文件之後,必須 commit
(提交)添加的文件到服務器:
$
cvs commit
-m
"some log message
"file-to-add
通常存檔的文件是簡單的文本文件,但是有時也會存檔二進制文件。CVS
程序可以識別大多數文件擴展名,類似 .png
或 .jpg
,這樣就不會做壞事。
當文件被檢出時,cvs
掃描它,查找特殊的關鍵字,類似 "$id:$
",然後替換爲相應的值, 例如版本號。
關鍵字替換通常會損壞二進制文件,因此如果 CVS 無法正確識別文件爲二進制文件,必須關閉替換。標識文件爲二進制就關閉了關鍵字替換,輸入命令:
$
cvs
admin
-kk
filename
注意在使用 admin
命令前,文件必須已被檢入 CVS
倉庫。這樣不會出錯,因爲關鍵字擴展是在文件被檢出並複製到本地目錄時進行的,而不是提交到倉庫中的時候。
恢復二進制文件 | |
---|---|
如果您將二進制文件檢入倉庫,發現它在檢出時被損壞了,不要心急。只要運行上面的 |
如果模塊不再需要某個文件,使用 remove
命令來刪除它,然後用 commit
命令將刪除提交到服務器。即使模塊的當前版本刪除了某個文件,這個文件的副本還會被保留在服務器上,可以隨時用 add
命令恢復。
$
cvs rm -f
file-to-remove
刪除文件後,必須 commit
(提交)刪除:
$
cvs commit
-m
"some log message
"file-to-remove
在用 commit
命令提交刪除時不能使用通配符。必須明確地指定文件名。
如果需要重命名某個文件,最好在 CVS
服務器上重命名它,這樣文件的歷史可以保留下來。如果需要重命名文件,就向 [email protected]
發送一封郵件,寫明要重命名的文件。
有時需要查看模塊中文件的 status (狀態)。執行命令:
$
cvs status
filename
倉庫文件的狀態報告如下所示:
Up-to-date
-
您的文件版本正是 CVS 服務器上的最新版本。
Locally Modified
-
您已從服務器上更新了最新的版本,並且做了修改。
Locally Added
-
您使用
cvs add
命令添加了文件,但是尚未提交文件的添加。 Locally Removed
-
您使用
cvs remove
命令刪除了文件,但是尚未提交文件的刪除。 Needs Checkout
-
服務器上有新版本的文件,您需要更新。儘管狀態中說,需要檢出,實際的意思是,您需要用
cvs update
命令更新文件。 Needs Patch
-
本地文件需要打補丁以更新到服務器的最新版。執行
cvs update
命令來解決。 Needs Merge
-
服務器上有更新的版本,您的本地版本卻做了未提交的修改。這種情況可能經常發生,如果您沒有獲取最新版本就進行修改的話。
File had conflicts on merge
-
類似
Needs Merge
,但是當您執行cvs update
命令時,將無法自動解決衝突。關於如何解決衝突請參考 第 10.4.8 節 “解決衝突” 。 Unknown
-
CVS 服務器不知道文件的任何信息。它沒有被本地添加或刪除,也從未提交到服務器上。這種情況通常發生在不應被提交到 CVS 服務器的文件上,例如
generated-index.sgml
,或者是想添加到倉庫但尚未執行cvs add
命令的文件。
如果您修改了一個文件,而另一個人修改了同樣的區域並且先提交了,您在提交文件或更新本地目錄時就會看到類似下面的消息:
RCS file: /cvs/docs/module-name/filename.sgml,v
retrieving revision 1.12
retrieving revision 1.13
Merging differences between 1.12 and 1.13 into filename.sgml
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in filename.sgml
C filename.sgml
要解決衝突,打開文件,搜索 <<<<<<<
然後判斷哪個版本纔是正確的。例如:
<para>
Some sentence.
<<<<<<< filename.sgml
A sentence that was changed in the working copy.
=======
A same sentence that was changed differently and committed.
>>>>>>> 1.13
</para>
<<<<<<<
和 =======
之間的內容是工作目錄裏原有的。 =======
和 >>>>>>>
之間是服務器上的內容。
修改文件,解決衝突,然後提交它。
所有命令都假定您的當前目錄是正確的。
命令 | 描述 |
---|---|
cvs checkout
或 cvs co
|
創建一個名爲 <module-name>
的目錄, 將模塊內容放在目錄中 |
cvs co -d
|
創建 <directory>
目錄,將 <module-name>
模塊的 <branchname>
分支放在目錄中。 |
cvs update
或 cvs up
|
從服務器將文件更新到最新版 |
cvs add
|
將文件 "filename" 添加到 CVS 服務器 |
cvs commit -m "My message"
|
將本地計算機上的文件 <filename>
提交爲最新版 |
cvs log
|
查看文件 <filename>
的提交信息 |
cvs status
|
查看文件的狀態,類似 Locally Modified
|
cvs status -v
|
查看文件現有的標籤和分支 |
cvs diff
|
查看文件的工作版本與分支中的最新版本的不同之處 |
cvs diff -r1.1 -r1.2
|
查看文件 1.1 和 1.2 版本的不同之處 |
表 10.1. 基本的 CVS 命令
請閱讀系統中的 CVS 手冊來獲取更多信息,位置是 /usr/share/doc/cvs-
(CVS 版本可能有所不同)。還可以訪問 CVS 主頁,位置是 http://www.cvshome.org/
。
<version-number>
/cvs.ps