如果經常編輯某些個別檔案,並且以檔案格式儲存,例如 ASCII 文字或程式來源文字,就非常適合使用 CVS 進行同步化。您可以使用 CVS 同步化其他格式的資料,例如 JPEG 檔案,但是會造成大量的資料,因為檔案的所有變體都會永久儲存在 CVS 伺服器上。在這種情形下,CVS 的大部份功能都將無法使用。只有在所有工作站都可以存取同一伺服器時,才能使用 CVS 同步化檔案。
server 是所有有效檔案所在的主機,這包含所有檔案的最新版本。任何靜態工作站都可做為伺服器。可能的話,CVS 儲存庫的資料應該包含在定期備份中。
當設定 CVS 伺服器時,透過 SSH 授予使用者該伺服器的存取權可能是不錯的方式。如果使用者是以 tux
的身份登入伺服器,而且 CVS 軟體既安裝在伺服器上也安裝在用戶端上,則必須在用戶端上設定下列環境變數:
CVS_RSH=ssh CVSROOT=tux@server:/serverdir
cvsinit
指令可用來從用戶端啟始 CVS 伺服器。這只需要做一次。
最後,必須為同步化指定名稱。在用戶端上選取或建立一個目錄,專門存放 CVS 所管理的檔案 (目錄也可以是空的)。該目錄的名稱也就是同步化的名稱。在此範例中,該目錄稱為 synchome
。變更至此目錄,然後輸入下列指令將同步化名稱設為 synchome
:
cvs import synchome tux wilber
許多 CVS 指令需要註解。因此,CVS 會啟動編輯器 (如果沒有定義編輯器,則會啟動環境變數 $EDITOR
或 vi 中所定義的編輯器。)在指令行先輸入註解,就可以避免編輯器的呼叫,如下列範例所示:
cvs import -m 'this is a test' synchome tux wilber
現在可以使用 cvsco synchome
從所有主機取出同步化儲存庫。這會在用戶端上建立新的子目錄 synchome
。若要將變更交付至伺服器,請換至 synchome
目錄 (或其中一個子目錄),然後輸入 cvscommit
。
根據預設,所有的檔案 (包括子目錄) 都會交付給伺服器。若只要交付個別的檔案或目錄,請在 cvscommit file1 directory1
中指定它們。在將它們交付至伺服器前,必須使用像是 cvsadd file1 directory1
之類的指令,將新檔案與目錄新增至儲存庫。接著,使用 cvscommit file1 directory1
交付新增的檔案與目錄。
您更換至另一個工作站時,如果先前的工作階段尚未取出該工作站的同步化儲存庫,請現在取出。
使用 cvsupdate
啟動與伺服器的同步化。依照 cvsupdate file1 directory1
中的個別檔案或目錄來更新。若要查看目前檔案與伺服器上所存版本的差異,請使用 cvsdiff
或 cvsdiff file1 directory1
指令。使用 cvs-nq update
來查看哪些檔案會受到更新的影響。
以下是更新期間所顯示的一些狀態符號:
已更新本地版本。這將會影響伺服器所提供及在本地系統上所遺失的全部檔案。
已修改本地版本。如果在伺服器上有一些變更,可以在本地複本中將差異合併。
本地版本已使用伺服器版本修補。
本地檔案與儲存庫中目前的版本衝突。
這個檔案並不存在於 CVS。
M
狀態是指在本地修改過的檔案。或是將本地複本交付至伺服器,或是移除本地檔案後再執行一次更新。在此例中,會從伺服器擷取遺失的檔案。如果您交付本地已修改的檔案,而該檔案是在同一行中變更並交付,則有可能造成衝突,這是以 C
表示。
如果發生這種狀況,請查看檔案中的衝突記號 (»> 與 «<),並在兩個版本之間做一選擇。這有可能是相當麻煩的工作,您可能會決定捨棄變更、刪除本地檔案,然後輸入 cvsup
,以便從伺服器擷取目前的版本。