基本的 CVS 命令)

來源:互聯網
上載者:User
http://fedora.gro.clinux.org/docs/documentation-guide-zh_CN/sn-cvs-cvscommands.html10.4. 基本的 CVS 命令

配置好系統的 CVS 訪問之後,檢出要處理的模組。

技巧

關於是否需要設定 $CVSROOT 環境變數,或命令列選項 -m repository,應當看當前工作目錄是否有一個 CVS/ 子目錄。

如果有 CVS/ 子目錄,CVS 忽略任何 $CVSROOT-m 命令列選項設定。

10.4.1. 檢出模組

您只需檢出模組一次。當一個模組檢出到本地之後,它就一直在那兒了。

要檢出一個模組,執行下面的命令:

$ cvs co  <module-name>

例如,要檢出 example-tutorial 模組,先進入工作目錄,然後執行下面的命令:

$ cvs co example-tutorial 

目前的目錄下將建立一個名字是 example-tutorial/ 的子目錄。

如果檢出模組時沒有指定分支名稱,預設就是 CVS 中模組的 HEAD 分支。

10.4.1.1. 檢出模組的分支

可以將 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-dateWorking revision:    1.47Repository revision: 1.47    /cvs/docs/custom-guide/rhl-cg-en.sgml,vSticky Tag:          (none)Sticky Date:         (none)Sticky Options:      (none)Existing Tags:BRANCH-VERSION-1.2              (branch: 1.25.2)

只有在 Existing Tags(現有標記)中顯示為"分支"的標記才可以作為分支檢出。

10.4.2. 更新檔案

要擷取模組中檔案的最新版本,切換到包含模組檔案的目錄,執行命令:

$ cvs update 

模組所有檔案的最新版本將下載到本地。如果您看到了檔案衝突提示,請參考 第 10.4.8 節 “解決衝突”。

10.4.3. 提交檔案

在本地修改模組的檔案之後,將它們提交,以在 CVS 伺服器上儲存更改:

$ cvs commit -m "some log message" filename
注意

如果您想用喜歡的文字編輯器來撰寫日誌資訊,並且已經定義了 $VISUAL 或 $EDITOR 環境變數,就可以忽略 -m "some log message"。編輯緩衝區中會包含一些描述修改的注釋,您在添加自己的文字時,不必刪掉它們。

日誌資訊應當儘可能有描述性,這樣您和共同作者都可以瞭解做過了哪些修改。如果日誌訊息是 updated some files(更新了一些檔案),那它無法描述修改了什麼,將來對您毫無用處。如果您修正了一個錯誤,應當包含 Bugzilla 引用。

<filename> 可以是一個檔案名稱,一系列以空格分隔的檔案名稱,或者一組以萬用字元指定的檔案名稱,類似 *.pngfoo-*.sgml

如果在 commit 命令中沒有給出檔案名稱或萬用字元,所有修改都會被提交到伺服器。這個命令是遞迴的,模組中任何子目錄的修改也都會被提交。不帶檔案名稱執行 commit 命令時要小心,因為您可能不記得改過了什麼。

如果您看到了檔案衝突,請參考 第 10.4.8 節 “解決衝突”。

10.4.4. 添加檔案

要向模組添加檔案,在本地目錄中建立這個檔案,然後執行下面的命令:

$ cvs add  file-to-add

添加檔案之後,必須 commit(提交)添加的檔案到伺服器:

$ cvs commit -m "some log message" file-to-add
10.4.5. 管理二進位檔案

通常存檔的檔案是簡單的文字檔,但是有時也會存檔二進位檔案。CVS 程式可以識別大多數副檔名,類似 .png.jpg,這樣就不會做壞事。

當檔案被檢出時,cvs 掃描它,尋找特殊的關鍵字,類似 "$id:$",然後替換為相應的值, 例如版本號碼。

關鍵字替換通常會損壞二進位檔案,因此如果 CVS 無法正確識別檔案為二進位檔案,必須關閉替換。標識檔案為二進位就關閉了關鍵字替換,輸入命令:

 $ cvs admin -kk filename

注意在使用 admin 命令前,檔案必須已被檢入 CVS 倉庫。這樣不會出錯,因為關鍵字擴充是在檔案被檢出並複製到本地目錄時進行的,而不是提交到倉庫中的時候。

恢複二進位檔案

如果您將二進位檔案檢入倉庫,發現它在檢出時被損壞了,不要心急。只要運行上面的 admin 命令,再刪掉本地檔案,然後再次檢出就可以了。

10.4.6. 刪除檔案

如果模組不再需要某個檔案,使用 remove 命令來刪除它,然後用 commit 命令將刪除提交到伺服器。即使模組的目前的版本刪除了某個檔案,這個檔案的副本還會被保留在伺服器上,可以隨時用 add 命令恢複。

$ cvs rm -f  file-to-remove

刪除檔案後,必須 commit(提交)刪除:

$ cvs commit -m"some log message" file-to-remove

在用 commit 命令提交刪除時不能使用萬用字元。必須明確地指定檔案名稱。

如果需要重新命名某個檔案,最好在 CVS 伺服器上重新命名它,這樣檔案的曆史可以保留下來。如果需要重新命名檔案,就向 cvsdocs-administrator@fedora.redhat.com 發送一封郵件,寫明要重新命名的檔案。

10.4.7. 檔案的狀態

有時需要查看模組中檔案的 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 命令的檔案。

10.4.8. 解決衝突

如果您修改了一個檔案,而另一個人修改了同樣的地區並且先提交了,您在提交檔案或更新本地目錄時就會看到類似下面的訊息:

        RCS file: /cvs/docs/module-name/filename.sgml,vretrieving revision 1.12retrieving revision 1.13Merging differences between 1.12 and 1.13 into filename.sgmlrcsmerge: warning: conflicts during mergecvs server: conflicts found in filename.sgmlC filename.sgml

要解決衝突,開啟檔案,搜尋 <<<<<<< 然後判斷哪個版本才是正確的。例如:

        <para>Some sentence.<<<<<<< filename.sgmlA sentence that was changed in the working copy.=======A same sentence that was changed differently and committed.>>>>>>> 1.13</para>

<<<<<<<======= 之間的內容是工作目錄裡原有的。 =======>>>>>>> 之間是伺服器上的內容。

修改檔案,解決衝突,然後提交它。

10.4.9. 小結

所有命令都假定您的目前的目錄是正確的。

命令 描述
cvs checkout <module-name>cvs co <module-name> 建立一個名為 <module-name> 的目錄, 將模組內容放在目錄中
cvs co -d <directory> -r <branchname><module-name> 建立 <directory> 目錄,將 <module-name> 模組的 <branchname> 分支放在目錄中。
cvs updatecvs up 從伺服器將檔案更新到最新版
cvs add <filename> 將檔案 "filename" 添加到 CVS 伺服器
cvs commit -m "My message" <filename> 將本機電腦上的檔案 <filename> 提交為最新版
cvs log <filename> 查看檔案 <filename> 的提交資訊
cvs status <filename> 查看檔案的狀態,類似 Locally Modified
cvs status -v <filename> 查看檔案現有的標籤和分支
cvs diff <filename> 查看檔案的工作版本與分支中的最新版本的不同之處
cvs diff -r1.1 -r1.2 <filename> 查看檔案 1.1 和 1.2 版本的不同之處

表 10.1. 基本的 CVS 命令

請閱讀系統中的 CVS 手冊來擷取更多資訊,位置是 /usr/share/doc/cvs-<version-number>/cvs.ps (CVS 版本可能有所不同)。還可以訪問 CVS 首頁,位置是 http://www.cvshome.org/。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.