在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > CVS完全手冊(cè)(一)

            CVS完全手冊(cè)(一)

            ——
            作者: 時(shí)間:2007-04-05 來(lái)源: 收藏

            內(nèi)容
            概述
            環(huán)境設(shè)置
            登錄服務(wù)器: 
            cvs命令格式
            的日常使用
            其他常用命令
            CVS宏/keyword
            CVS分支管理
            CVS服務(wù)器的安裝和配置
            Watchers
            WinCVS的安裝和配置
            CVSWEB的安裝


            概述
            ==================================

            CVS是一個(gè)并行版本控制系統(tǒng),它采用C/S模式,它的復(fù)雜度和功能性屬于中等,是當(dāng)今最流行的版本控制系統(tǒng)。它有兩個(gè)基本的特點(diǎn):
            *保存修改記錄:保存了所有文件的修改歷史,并可以建立分支
            *協(xié)作與并行:cvs不推薦使用lock-modify-unlock的串行的工作模式,而采用多人可以并行地修改同一個(gè)文件,而在提交時(shí)merge conflict;它更適合于大型的工作團(tuán)體。
            使用CVS的好處:
            *文件集中管理,大家都可以方便的看到所有人員的最新文件,規(guī)范化了文件的管理
            *可以查看以前任何的一個(gè)版本或修改歷史
            *可以同時(shí)維護(hù)多個(gè)版本和分支


            CVS環(huán)境設(shè)置
            ==================================

            先不要管CVS服務(wù)器的配置,我們先假設(shè)已經(jīng)有一臺(tái)配置好的服務(wù)器,要訪問(wèn)CVS,必需先設(shè)置環(huán)境變量CVSROOT
            CVSROOT=:pserver:user@server#port:/path/to/cvsroot

            *pserver是訪問(wèn)方式,口令認(rèn)證的意思,這是最常用的方式,其他還有g(shù)server,kserver,ext
            *user是CVS服務(wù)器的用戶名,
            *server是CVS服務(wù)器的名稱或者IP地址
            */path/to/cvsroot是你的CVS服務(wù)器的CVSROOT目錄,根據(jù)你的CVS服務(wù)器設(shè)置做修改或者詢問(wèn)管理員
            你可以把設(shè)置放到你的shell的profile里(.bash_profile,.profile等)這樣就不用每次敲一長(zhǎng)串命令了

            高級(jí)功能:現(xiàn)在比較流行是使用ssh來(lái)加密口令和數(shù)據(jù)流
            CVSROOT=:ext:user@server#port:/path/to/cvsroot
            CVS_RSH=ssh
            hints:
            實(shí)際上沒(méi)有CVSROOT也可以,你可以每次用cvs -d :pserver:user@server#port: /path/to/cvsroot來(lái)訪問(wèn),而且它將忽略CVSROOT環(huán)境變量 ,也許你會(huì)笑我只有瘋子才這么用,不過(guò),cvs可以把每次使用的命令參數(shù)放到一個(gè)文件中,所以在~/.cvsrc中加入
            cvs -d :pserver:user@server#port:/path/to/cvsroot
            即可,它最大的好處是修改了立刻生效,而且它的優(yōu)先級(jí)高于CVSROOT環(huán)境變量,到時(shí)候不要傻乎乎地來(lái)問(wèn)我,我的環(huán)境變量真么不起作用了。


            登錄CVS服務(wù)器: 
            ==================================
            $cvs login,這時(shí)候cvs會(huì)問(wèn)你口令,請(qǐng)把你在CVS服務(wù)器上的口令敲進(jìn)去
            如果沒(méi)有任何錯(cuò)誤信息,恭喜你,成功了!
            成功登錄后將建立一個(gè)~/.cvspass文件,保存你的口令,以后就不用輸入口令了.

            cvs命令格式
            ==================================
            cvs [global_opts] command [command_opts] [command_args]
            Global options 屬于左邊cvs的,是全局的
            command_opts   屬于左邊command的,是局部的
            cvs --help-commands查看命令列表
            cvs -H command/cvs -help command 查看該命令的選項(xiàng)
            hints:如果你每次使用一些命令都帶同樣的參數(shù)的話,可以把它們放到~/.cvsrc文件中去
            update -c
            diff -c
            add -kb
            cvs -Q


            cvs global-option comand comand-option arguments

            CVS的日常使用
            ==================================
            CVS使用流程
               a checkout 盡當(dāng)本地沒(méi)有working copy時(shí)使用
               b staus 檢查服務(wù)器上是否有新版本
               c update 如果有,則用update同步文件
               d 做你自己的修改,并保證正確
               e update 看是否有人修改了你的文件
               f 如果有沖突,合并沖突
               g commit 提交你的修改,如果因?yàn)橛钟腥颂峤恍薷亩?,回到e步
               h 回到b步

            1 cvs checkout module_name
            -------------------------------------
            module_name可以暫時(shí)理解為目錄名,它會(huì)在本地但前目錄下建立module_name目錄,在把服務(wù)器上說(shuō)有module_name目錄下的文件copy到本地module_name目錄下。
            注意:第一次checkout后,就不是通過(guò)cvs checkout來(lái)同步文件了,而是要進(jìn)入該目錄下進(jìn)行具體文件的版本同步(添加,修改,刪除)操作。

            2 cvs update filename
            -------------------------------------
            將文件同步到最新的版本:不指定文件名,cvs將同步所有子目錄下的文件。
            最好每天開(kāi)始工作前或?qū)⒆约旱墓ぷ鲗?dǎo)入到CVS庫(kù)里前都要做一次,并養(yǎng)成"先同步 后修改"的習(xí)慣,和Virvual SourceSafe不同,CVS里沒(méi)有文件鎖定的概念,所有的沖突是在commit之前解決,如果你修改過(guò)程中,有其他人修改并commit到了CVS庫(kù)中,CVS會(huì)通知你文件沖突
            <<<<<<< filename
             你文件上的內(nèi)容
            =======
              服務(wù)器上文件的內(nèi)容
            >;>;>;>;>;>;>; latest revision number in the repository

            由你確認(rèn)沖突內(nèi)容的取舍。也可以多人協(xié)商解決,修改完成后去掉文件中的沖突標(biāo)志

            conflict:多人修改同一文件的同一區(qū)域這就叫沖突,它必須由人來(lái)解決,CVS不處理沖突,它只是告訴你存才沖突


            3 cvs commit -m "write some comments here" file_name
            ------------------------------------
            確認(rèn)修改寫入到CVS庫(kù)里。
            注意:CVS的很多動(dòng)作都是通過(guò)cvs commit進(jìn)行最后確認(rèn)并修改的,最好每次只修改一個(gè)文件。在確認(rèn)的前,還需要用戶填寫修改注釋,以幫助其他開(kāi)發(fā)人員了解修改的原因。如果不用寫-m "comments"而直接確認(rèn)`cvs commit file_name` 的話,cvs會(huì)自動(dòng)調(diào)用系統(tǒng)缺省的文字編輯器(一般是vi)要求你寫入注釋。
            注釋的質(zhì)量很重要:所以不僅必須要寫,而且必須寫一些比較有意義的內(nèi)容:以方便其他開(kāi)發(fā)人員能夠很好的理解
            不好的注釋,很難讓其他的開(kāi)發(fā)人員快速的理解:比如: -m "bug fixed" 甚至 -m ""
            好的注釋,甚至可以用中文: -m "在用戶注冊(cè)過(guò)程中加入了Email地址校驗(yàn)"

            修改某個(gè)版本注釋:每次只確認(rèn)一個(gè)文件到CVS庫(kù)里是一個(gè)很好的習(xí)慣,但難免有時(shí)候忘了指定文件名,把多個(gè)文件以同樣注釋commit到CVS庫(kù)里了,以下命令可以允許你修改某個(gè)文件某個(gè)版本的注釋:
            cvs admin -m 1.3:"write some comments here" file_name

            4 查看狀態(tài)
            ------------------------------------
            cvs status filename
            狀態(tài)報(bào)告,類似這樣: 
            File: foo.c             Status: Up-to-date 
               Working revision:    1.1.1.1 'Some Date' 
               Repository revision: 1.2     /home/cvsroot/cvstest/foo.c,v 
               Sticky Tag:          (none) 
               Sticky Date:         (none) 
               Sticky Options:      (none) 

            這里最重要的就是Status欄,這里總共可能有四種狀態(tài): 
            Up-to-date: 表明你要到的文件是最新的. 
            Locally Modified: 表明你曾經(jīng)修改過(guò)該文件,但還沒(méi)有提交,你的版本比倉(cāng)庫(kù)里的新. 
            Needing Patch: 表明有個(gè)哥們已經(jīng)修改過(guò)該文件并且已經(jīng)提交了!你的版本比倉(cāng)庫(kù)里的舊. 
            Needs Merge: 表明你曾經(jīng)修改該文件,但是偏偏有個(gè)不識(shí)相的也修改了這個(gè)文件,而且還提交了!

            5 查看修改歷史和注釋信息
            ------------------------------------
            cvs log file_name


            其他常用命令
            ==================================
            1 添加文件和目錄
            ------------------------------------
            cvs add new_file_name
            cvs add -kb new_file_name
            cvs add dir_name

            CVS一般只處理文本文件,它會(huì)擴(kuò)展keyword(宏)并轉(zhuǎn)換行結(jié)束符
            對(duì)于圖片,Word文檔等非純文本的項(xiàng)目,需要使用cvs add -kb選項(xiàng),否則有可能出現(xiàn)文件被破壞的情況
            然后確認(rèn)修改并注釋
            cvs ci -m "write some comments here"  new_file_name

            2 刪除文件
            ------------------------------------
            將某個(gè)源文件物理刪除后
            cvs remove file_name
            然后確認(rèn)修改并注釋
            cvs ci -m "write some comments here" file_name

            注意:很多cvs命令都有縮寫形式:commit=>;ci; update=>;up; checkout=>;co; remove=>;rm;

            3.修改文件名
            ------------------------------------
            移動(dòng)文件:文件重命名
            cvs里沒(méi)有cvs move或cvs rename,因?yàn)檫@兩個(gè)操作是先cvs remove old_file_name,然后cvs add new_file_name實(shí)現(xiàn)的。

            4 目錄結(jié)構(gòu)同步
            ------------------------------------
            如果在你checkout后,有人添加了新的文件或目錄,你需要把他們?nèi)〕鰜?lái)
            cvs update -d

            5 放棄本地的修改(undo)
            ------------------------------------
            如果修改來(lái)了本地文件,不想提交,想重新取新文件
            cvs update -C filename
            它會(huì)先把你的本地文件改名

            建議:建議大家把checkout的文件缺省為readonly,把"cvs -r"添加到~/.cvsrc文件中
                 這樣,你每次修改一個(gè)文件前,先cvs edit filename,提交后文件又變成readonly,
                       如果你想放棄本地的修改,則cvs unedit filename,它會(huì)undo,而且文件又變成readonly


            6 恢復(fù)到舊版本
            ------------------------------------
            cvs update -j1.20 -j1.15 filenames
            1.20時(shí)當(dāng)前版本號(hào),注意順序不要反了,記住要commit,為了保證是但前版本號(hào),最好先lock
            注意:cvs update -r1.15 file.name,這里的-r不是版本號(hào)的意思,是給文件加了一個(gè)叫1.15的sticky tag
            如果不小心已經(jīng)加成STICK TAG的話:用cvs update -A 解決

            7 文件比較
            ------------------------------------
            cvs diff -c filename
            cvs diff -c -r1.8 -r 1.5 filename

            8 鎖定與解鎖文件
            ------------------------------------
            為保證串行的修改文件,或修改二
            cvs admin -l files
            cvs admin -u files


            ==========================================================================
            如果你只是一般性的使用cvs,到此為止就足夠了。一個(gè)系統(tǒng)20%的功能往往能夠滿足80%的需求,CVS也不例外,以下是CVS最常用的功能,可能用到的還不到它全部命令選項(xiàng)的10%,更多的功能請(qǐng)?jiān)趯?shí)際應(yīng)用過(guò)程中體會(huì),學(xué)習(xí)過(guò)程中應(yīng)該是用多少,學(xué)多少,用到了再學(xué)也不遲。
            ==========================================================================

            CVS宏/keyword
            ==================================
            CVS缺省會(huì)對(duì)文件進(jìn)行keyword(宏)替換,在文件中加入這些關(guān)鍵字是個(gè)良好的工作習(xí)慣
            $Id$ 關(guān)鍵字是用文件名、版本、時(shí)間、作者 及代碼性質(zhì)替換,如果使用-l選項(xiàng)取出,在Exp后
            面會(huì)加上登錄用戶的名稱。除了$Id$關(guān)鍵字,RCS還支持下面常用的關(guān)鍵字:
            $Log$ : 你所提供的修改日志信息。
            $Author$ :存入該版本的作者。
            $Locker$ : 該版本的加鎖者
            $State$ : 該版本的狀態(tài) Exp(試驗(yàn)版), Stabe(穩(wěn)定版), Rel(發(fā)行版).缺省是Exp
            $Date$ : 該版本存入的時(shí)間,使用UTC時(shí)間格式。
            $Revision$ : 該版本的版本號(hào)
            $RCSfile$ : RCS文件名
            $Source$ : RCS全路徑名
            $Name$ : 取回該版本的符號(hào)名
            $Header$ : 相當(dāng)于$ Source $$ Revision$$Date$$Author $$State$$Locker$的組合


            Sticky Tag
            ==================================
            tag的作用是對(duì)多個(gè)連續(xù)變化的文件做一個(gè)快照來(lái)表示某一時(shí)刻的所有不停內(nèi)部版本的文件,一般是項(xiàng)目到一定階段,可以給所有文件統(tǒng)一指定一個(gè)階段里程碑版本號(hào),需要的時(shí)候可以一次導(dǎo)出這些版本不一的文件.標(biāo)記的另外一個(gè)非常重要的作用是生成分支和合并分支.
            1 cvs tag release_name  module_name
            ------------------------------------
            release_name要簡(jiǎn)潔而含義豐富,由字母開(kāi)頭,加字母,數(shù)字,下劃線和連字號(hào)組成,特別是不能含“.”
            2 cvs checkout -r release_name module_name
            ------------------------------------
            取出tag_name標(biāo)志的文件
            3 cvs update -A
            ------------------------------------
            tag標(biāo)識(shí)的文件是歷史文件,不能修改,這樣可在本地去除這個(gè)限制,讓它和當(dāng)前版本合并



            關(guān)鍵詞: CVS

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉