CVS 命令
本文出自 “Fighting” 博客,請務必保留此出處http://fangfang0717.blog.51cto.com/236466/48721
一臺可以安裝你的工作目錄的機器上運行 cvs,它被稱為客戶機(client),然后告訴它你將連到一臺安裝有倉庫的機器,它被稱為服務器(server)。通常,使用遠程倉庫除了倉庫名稱格式不同,其它方面與本地機沒什么區別:
[:method:][[user][:password]@]hostname[:[port]]/path/to/repository 如: CVSROOT=:pserver:zsun@192.168.2.4:/cvsroot/projects 不推薦直接采用密碼的形式,而用 cvs login 命令來代替。 pserver含義: 為了通過口令驗證服務器遠程在倉庫上運行 cvs命令,需要指定 pserver 協議。 下面兩種方法同等?cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj
或 CVSROOT=:pserver:bach@faun.example.org:2401/usr/local/cvsrootcvs checkout someproj
?
?
CVS的命令格式是:cvs [cvs的選項] cvs-command [command 選項]
如:
cvs commit
cvs -d /usr/local/cvsroot init
cvs update
cvs -H command (列出命令command的使用方法)
運行CVS不需要特殊的權限, 只是在多人時需要設定大家都有讀寫權.(見后)
注意:使用CVS管理源代碼,對于代碼的獲得,更新,應通過CVS命令來完成.
在服務器端:
?
下面從一個項目開始.
一,開始項目
用CVS來管理原代碼,首先要創建一個\"倉庫\"(repository),\"倉庫\"簡單來說是
一個目錄結構,它包括樂要管理的原代碼和用于管理原代碼的各種管理文件.
使用CVS命令init:
先設置環境變量CVSROOT,指向倉庫的絕對路徑,然后調用CVS的init命令
bash$ CVSROOT=/usr/local/cvsroot;export CVSROOT
bash$ cvs init
bash$ ls -l $CVSROOT
也可以用CVS參數-d path來覆蓋$CVSROOT的值
bash$ cvs -d /usr/local/cvsroot init
許多CVS的命令允許用這種方式指定cvs的根目錄.
二,添加文件,目錄到倉庫
我們要將需要管理的文件加入倉庫,并命名
CVS命令import (此命令應只用一次, 以后用cvs add)
例如, 將當前目錄下的src/*加入:
bash$ cvs import -m \"init implement\" myproject myvtag mtrtag
-m 指定log message
myproject : 倉庫名
myvtag: vendor tag
myrtag: release tag
三,設置權限
源碼管理員應對倉庫下的文件和目錄設置恰當的許可權限來控制訪問.
所有的RCS文件(以,v結尾)是只讀方式,倉庫中的目錄應當對使用者有寫權,以便允許
其更改.
倉庫設好后,就可以利用CVS的命令來管理.(包括對項目,對源代碼)
一般的常用的命令:
cvs checkout
從倉庫中得到某版本的代碼.在本地產生一個copy
cvs update
從倉庫中更新本地的代碼
cvs commit
將本地修改后的代碼提交倉庫,并產生新版本.
cvs add
添加新的文件到倉庫,在cvs commit命令后生效.
一般的流程是
cvs checkout or cvs update
用你喜歡的編輯器修改本地copy
cvs commit
提交修改. 詳細介紹 ? CVS checkout 命令
從倉庫提取指定的文件到當前目錄,并建立同樣的結構,并創建CVS目錄
例
bash$ cvs checkout project
bash$ cvs checkout project/src/main
為使用便利,我們可以對一個目錄建一個縮寫,方法是修改$CVSROOT/CVSROOT/下的
modules文件.(當然是用cvs 命令完成)
cvs checkout CVSROOT/modules
cd CVSROOT
vi modules
我們在文件尾加上
src project/src
print project/src/print
cvs commit
以后我們就可以用cvs checkout print來代替
cvs checkout project/src/print
cvs checkout命令缺省是得到最新版本.我們也可以得到某一個老版本
cvs checkout -r 1.1 print
將print的1.1版的代碼取出.
cvs checkout的詳細用法見cvs -H checkout的輸出.
CVS commit 命令
在對文件的修改完成后,用cvs commit提交到倉庫.
cvs commit -m \"Update by xxxxx\" project
cvs commit -m \"Update main.c\" main.c
提交完成后,當前的版本號會更新,如原來為1.1,現為1.2. 這兩個版本都在
倉庫的主干(maintrunk)上.
-m選項可以記錄有關提交的注釋.如果沒有指定-m選項,在環境變量CVSEDITOR
中指定的編輯器被調用(vi是缺省的),提示鍵入文本,修改記錄注釋.
CVS update
CVS允許多人同時對一個文件進行修改.
假設泥正在修改文件的一部分,現想合并更新自己的本地拷貝(checkout)和
另一個人所做的修改(已經放在倉庫里),可用cvs update
cvs update
CVS tag , CVS rtag
創建分支可以使用戶對一些文件進行修改而不會影響主干(當commit時).
創建分支首先為擬修改的某些文件創建一個標簽(tag),標簽是賦于一個文件或一組文件的符號.在源代碼的生命周期里,組成一組模塊的文件被賦于相同的標簽.
創建標簽:在工作目錄里執行cvs tag
例: 為src創建標簽:
cvs checkout src
cvs tag release-1-0
標簽創建后, 就可以為其創建一個分支:
cvs rtag -b -r release-1-0 release-1-0-path print
-b :創建分支
-r release-1-0 :指定存在的標簽
releas-1-0-patch:分支
print: 模塊名
合并
使用cvs update -j 選項可以將分支上的改變與本地文件拷貝合并.
cvs update -j release-1-0 print.c
cvs release
對源文件作必要修改后, 可以用cvs release 刪除本地工作拷貝
并通知其他開發者這個模塊不再使用.
cvs release -d print
-d : 刪除
print: 目錄
沖突
由于CVS允許多人同時修改同一文件,沖突是不可避免的.例如當兩人
同時修改同一文件的同一行時.
這時,如用cvs update 更新,CVS檢測到沖突的存在,它會將沖突的代碼
用\"<<<<<<<<<<<<<<<\", \">>>>>>>>>>>>>>>\"標識.這時需手工處理這段代碼.與引起
沖突的開發者協商,并對文件修改后即可用cvs commit提交.
CVS history 命令 cvs history 能夠查看以自己的用戶名登錄在服務器上的目錄。
?
總結
- 上一篇: poi的autoSizeColumn方法
- 下一篇: cvs update 的输出标志/upd