• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Thronds

            一問你會什么 二問你做出過什么 三問你為了什么

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              36 隨筆 :: 0 文章 :: 56 評論 :: 0 Trackbacks

            此文雖看上去寫的很詳細,但有些地方卻還模糊,該簡潔的地方沒有簡潔,讀者很容易迷糊。再留下一個ubuntu系統下配置cvs的文章,比較簡潔。
            http://www.yuanma.org/data/2006/0424/article_299.htm
            在Linux和Windows下搭建CVS服務器與CVS客戶端的詳細配置指南


            ============================================
            時間:2007-04-12
            作者:飄揚
            首發:飄揚博客
            網址:http://piaoyang.org
            Q Q: 47720194
            郵箱:piaoyang168#163.com  
            版權聲明:可以任意轉載,轉載時請務必標明原始出處和作者信息
            ============================================

            摘要:本教程包含CVS的入門知識講解、在linux和windows下CVS服務器與CVS客戶端的配置指南,詳細介紹了配置過程,可以說是一篇組建CVS開發環境的入門、學習與提高的完美教程。通過本教程你可以在最短的時間里面最快的搭建好CVS服務器與CVS客戶端的的開發環境。如有不明之處,請聯系飄揚,你可以到我的博客飄揚博客http://www.piaoyang.org 給我留言或QQ47720194,我會盡力解答你的問題。

            ***********************************
            目錄:
            一、CVS入門知識詳解
                     1、什么是 CVS?
                     2、CVS基本概念
            二、Linux下CVS服務器與客戶端的配置
                     1、Linux下CVS服務器的配置
                     2、Linux下CVS客戶端的配置
            三、Windows下CVS服務器與客戶端的配置
                     1、windows下CVS服務器的配置
                     2、windows下CVS客戶端的配置
            四、結束語
            ***********************************


            一、CVS入門知識詳解

            1、什么是 CVS?

            CVS 是一種客戶機/服務器系統,類似于microsoft SourceSafe,可以讓開發人員將他們的項目存儲在稱為資源庫的中央位置。使用 cvs 客戶機工具,開發人員可以對資源庫的內容進行更改。CVS 資源庫會依次記錄對每個文件所做的每個更改,并創建一個完整的項目開發進展歷史。開發人員可以請求特定源文件的舊版本、查看更改日志,并根據需要執行其它一些有用的任務。所有重要的免費軟件項目都使用 CVS 作為其程序員之間的中心點,以便能夠綜合各程序員的改進和更改。這些項目包括: Gnome, KDE, The GIMP, Wine, 等等。

            CVS 的基本工作思路是這樣的:在一臺服務器上建立一個倉庫,倉庫里可以存放許多不同項目的源程序。由倉庫管理員統一管理這些源程序.這樣,就好象只有一個人在修改文件一樣.避免了沖突.每個用戶在使用倉庫之前,首先要把倉庫里的項目文件下載到本地。用戶做的任何修改首先都是在本地進行,然后用 cvs 命令進行提交,由 cvs 倉庫管理員統一 修改.這樣就可以做到跟蹤文件變化,沖突控制等等.

            CVS可以協助一組人共同開發一個工程。如果你是一個項目中的一組成員之一,CVS也能夠幫助你。除非你特別仔細,你很容易覆蓋其他人的工作。一些編輯器,例如GNUEmacs,試圖去判定一個文件是否被兩人同時修改。不幸的是,如果一個人使用其它的編輯器時,這個安全方式將不再有效。CVS使用讓不同開發者獨立工作的方式解決了這個問題。每一個開發者的工作都在他自己的目錄內,并且CVS將 在每個開發者的工作完成后進行合并工作。

            由于 CVS 是典型的 C/S 結構的軟件,因此它也分成服務器端和客戶端兩部分。不過大多數CVS 軟件都把它們合二為一了。我們這里就分別從服務器和客戶端的角度討論cvs的使用。

            2、CVS基本概念

            Repository(倉庫)
            CVS的倉庫存儲全部的版本控制下的文件copy,通常不容許直接訪問,只能通過cvs命令,獲得一份本地copy,改動后再check in(commit)回倉庫。而倉庫通常為與工作目錄分離的。CVS通過多種方式訪問倉庫。每種方法有不同目錄表示形式。數據如何存放在repository中:隨著CVS版本的不同,存放結構會發生變化,一般情況下用戶無需了解數據到底是如何存放的。

            Revision(修訂版)
            每一個file的各個revision都不相同,形如1.1, 1.2.1,一般1.1是該文件的第一個revision,后面的一個將自動增加最右面的一個整數,比如1.2, 1.3, 1.4...有時候會出現1.3.2.2,原因見后。revision總是偶數個數字。一般情況下將revision看作時CVS自己內部的一個編號,而tag則可以標志用戶的特定信息。

            Tag(標簽)
            用符號化的表示方法標志文件特定revision的信息。通常不需要對某一個孤立的文件作tag,而是對所有文件同時作一個tag,以后用戶可以僅向特定tag的文件提交或者checkout。另外一個作用是在發布軟件的時候表示哪些文件及其哪個版本是可用的;各文件不同revision可以包括在一個tag中。如果命名一個已存在的tag默認將不會覆蓋原來的;

            Branch(分支)
            當用戶修改一個branch時不會對另外的branch產生任何影響。可以在適當的時候通過合并的方法將兩個版本合起來;branch總是在當前revision后面加上一個偶數整數(從2開始,到0結束),所以branch總是奇數個數字,比如1.2后面branch為1.2.2,該分支下revision可能為1.2.2.1,1.2.2.2,...

            Conflict(沖突)
            完全是純文本的沖突,不包含邏輯上的矛盾,比如CVS不能解決如下問題:某人修改了函數f的參數,而另外一個人在另外一個地方用老的參數調用該函數。文本沖突需要用戶自己參與解決,CVS無法自動解決。(如還有不明之處,請聯系飄揚,你可以到我的博客飄揚博客http://www.piaoyang.org 給我留言或QQ47720194,我會盡力解答你的問題。)

            Module(模塊):CVS服務器根目錄下的第一級子目錄。通常用于存放一個項目的所有文件
            Check out(檢出):通常指將倉庫中的一整個模塊首次導出到本地。
            Check in(導入)::通常指通過提交整個目錄結構并創建一個新的模塊。
            Release(發行版本):整個產品的版本
            Update(更新):從模塊中下載其他人的修改過的文件。更新本地的拷貝。
            Commit(提交):將自己修改過的文件提交到模塊中。

            二、Linux下CVS服務器與客戶端的配置與使用

            1、Linux下CVS服務器的配置
            在RedHat Linux 7.1之后的版本上,都有自動安裝CVS服務器軟件,只要對該軟件進行設置,即可使用。此次配置我用的是虛擬機VMware環境下的linux redhat9.0,下面是具體的配置過程。

            1.1 創建cvs組并加入用戶
            在root權限下,創建一個cvs組并加入成員
            1) 創建組:groupadd cvs
            2) 打開/etc/group文件,找到該組,如cvs:x:514:,在后面添加要加入的用戶,比如piaoyang,chen等,以逗號隔開,編輯結果是:cvs:x:514:piaoyang, chen
            只有加入這個組中的成員才能進行相關CVS操作。保存該文件。

            1.2 創建一個倉庫
            假定將CVSROOT指向/usr/local(也可以指向別的目錄),用root登錄。
            1) 創建cvsroot目錄:mkdir /usr/local/cvsroot
            2) 設置該目錄的模式:chmod 1777 /usr/local/cvsroot
            3) 修改環境變量:export CVSROOT= /usr/local/cvsroot
            4) cvs init   這樣就創建了 CVSROOT。
            5) 更新環境變量:
            #source   /etc/profile
            此時系統已經認識$CVSROOT這樣的環境變量

            1.3 裝入源代碼
            1) 進入代碼所在目錄:cd [sourcedir],如cd test
            2) 裝載cvs import -m "[repository test]" [cvstest] [vendortag] [releasetag]
            -m后面引號內填入log內容,接下來是源代碼模塊名稱,接著是裝載者,最后是標識符號,
            例如:cvs import –m “cvs test” cvstest piaoyang start
            cvs組中的用戶也可以創建倉庫,但必須有寫權限,該權限的設置在下面將會提到。(如還有不明之處,請聯系飄揚,你可以到我的博客飄揚博客http://www.piaoyang.org給我留言或QQ47720194,我會盡力解答你的問題。)

            1.4 設置權限
            cvs初始化結束以后,在管理員用戶(這里是cvs用戶)的主目錄/usr/local/cvsroot/下有一個 CVSROOT 目錄,這個目錄里有三個配置文件:readers,writers, passwd。我們可以通過設置這三個文件來配置 CVS 服務器用戶的權限,下面分別介紹這幾個文件的作用:
                 readers文件:此文件中的用戶允許對模塊進行讀取,不允許寫入;
                 writers文件:此文件中的用戶允許對模塊進行讀取和寫入;
                 passwd文件:此文件存儲用戶名和密碼,當用戶登錄時進行驗證;
                 1) readers和writers的格式如下,每個用戶占據一行:
                   aaa
                   bbb
                   ccc
                 2) passwd文件的格式如下,每個用戶占據一行:
                       [cvs 用戶名]:[加密的口令]:[等效系統用戶名]
                 如:   piaoyang:$1$rPVPciBw$IK3fb4jO7hQbPXFjK3ee..:piaoyang
                 其中“piaoyang:$1$rPVPciBw$IK3fb4jO7hQbPXFjK3ee..:”從/etc/shadow中拷貝過來。
                 3) 上面三個文件在缺省安裝的時候可能都不存在,需要我們自己創建,好吧,現在還是讓我們用一個例子來說明吧。假設我們有下面幾個用戶需要使用 cvs:
                laser,gumpwu,henry,betty,anonymous
            其中 laser 和 gumpwu 是系統用戶,而henry, betty, anonymous 我們都不想給系統用戶權限,并且 betty 和 anonymous 都是只讀用戶,而且 anonymous 更是連口令都沒有。
            然后編輯 cvs 管理員家目錄里 CVSROOT/passwd 文件,加入下面幾行:

            laser:$xxefajfka;faffa33:cvspub 
            gumpwu:$ajfaal;323r0ofeeanv:cvspub
            henry:$fajkdpaieje:cvspub
            betty:fjkal;ffjieinfn/:cvspub
            anonymous::cvspub

            注意:上面的第二個字段(分隔符為 :)是密文口令,從/etc/shadow中拷貝過來即可(此方法適合cvs用戶較少的情況,如果用戶過多,則需要自己用程序生成密碼了)。
            編輯 readers 文件,加入下面幾行:
            anonymous
            betty
            編輯 writer 文件,加入下面幾行:
            laser
            gumpwu
            henry
            這樣就 ok 了,你再用幾個用戶分別登陸測試,就會發現一切都 ok 了。這里面的原理和說明我想就不多說了,其實很簡單,和系統管理用戶的概念是一樣的。

            1.5 設置開機自動運行CVS
            1) 在/etc/xinetd.d目錄下生成一個文件cvspserver。輸入命令:
                 touch cvspserver
                 vi cvspserver
                 在cvspserver文件里寫入如下內容并保存:
            # CVS : current version contrl system 
            # DEFAULT: services is enable
            # this server script was be writed by piaoyang.org
            # www.piaoyang.org  

            service cvspserver

            {
                 socket_type = stream
                 protocol = tcp
                 wait = no
                 user = root
                 server = /usr/bin/cvs
                 server_args = -f --allow-root=/usr/local/cvsroot pserver
                 log_on_success +=USERID
                 log_on_failure +=USERID
                 disable = no
            }

            2) 修改該文件權限:
            chmod 644 cvspserver
            3),到/etc/rc.d/init.d路徑下,運行如下指令重新啟動xinetd即可:
            ./xinetd restart
            4) 重啟后用root登錄,察看cvs服務器是否已經運行:
            netstat -l |grep cvspserver
            如果返回tcp 0 0 *:cvspserver *:* LISTEN,則說明cvs服務器已經運行。

            2、Linux下CVS客戶端的配置
            為了連接到 CVS 資源庫,您需要知道稱為 "CVSROOT" 的路徑。CVSROOT 是一個字符串,就象 URL,它告訴 CVS用戶遠程資源庫在哪里,以及如何連接它。不僅如此,根據 CVS 資源庫是本地的還是遠程的,以及連接到它的不同方式,CVS 還有許多不同的 CVSROOT 格式。

            2.1 連接CVS服務器
            當然你必須擁有cvs用戶帳號和密碼,以及相關權限。在Linux環境下:
            1) 本地 CVSROOT
                 export CVSROOT=/usr/local/cvsroot (告訴CVS客戶端,存放代碼的資源庫在什么地方)
                 一個實際的例子,在版本管理員將代碼庫存放在192.168.0.8 的機器上,路徑為:
                 /usr/local/cvsroot(如果你telnet 到 192.168.0.8 的機器上的時候,此時你就是在本機)
            2) 遠程密碼服務器 CVSROOT
                 export CVSROOT=:pserver:piaoyang@192.168.0.8:/usr/local/cvsroot(注意冒號不能漏掉,句子中間沒有空格)
                 pserver 是CVS內部的一種傳輸協議。
                 piaoyang 是用戶名,
                 192.168.0.8 機器的IP或名字(如果有DNS才能用名字)
                 /usr/local/cvsroot 是代碼庫的具體路徑
            (注意:如果你不想每次敲這么多枯燥的命令,你可以在你登陸的時候讓系統作這些事情,具體的作法是修改你登錄的環境變量。現在用piaoyang作為例子,在文件/home/piaoyang/.bash_profile后面加入
            export CVSROOT=/home/cvsroot 或export CVSROOT=:pserver:piaoyang@192.168.0.8:/home/cvsroot
            并在根目錄下運行:. ./.bash_profile)

            2.2 登錄CVS服務器
            cvs login
            (Logging in to cvs@192.168.0.8)
            CVS password:(在此輸入密碼)

            2.3 拷貝相應模塊代碼并進行開發
            如輸入: cvs -z5 checkout VPN
            此命令告訴 CVS 客戶端使用 gzip 壓縮級 5 ("-z5") 在慢速連接上加快傳輸速度,來檢出 ("checkout")VPN模塊。
            一旦檢出命令完成,將在包含最新源碼的當前工作目錄中看到 "VPN" 目錄。還會注意到每個子目錄下都有一個"CVS"目錄 -- CVS 在這些目錄中存儲帳戶信息,可以放心地忽略它們。一旦檢出結束,用戶就無需擔心是否設置了 CVSROOT 環境變量,也無需再在命令行上指定它,因為現在所有額外的 "CVS" 目錄里都有它的緩存。
            記住:只需要為初始登錄和檢出設置 CVSROOT。至此你就可以在剛才check out的VPN模塊上進行修改或開發了。(如還有不明之處,請聯系飄揚,你可以到我的博客飄揚博客http://www.piaoyang.org給我留言或QQ47720194,我會盡力解答你的問題。)

            三、Windows下CVS服務器與客戶端的配置

            1、windows下CVS服務器的配置
            在此,我們以WinCVS為例來介紹。WinCVS顧名思義,是用在windows上的,它是一款相當不錯的基于Windows的CVS客戶端軟件。安裝時沒有什么特別的地方,與普通的Windows軟件相同,一路next就OK了。(最新的WinCVS可以從http://sourceforge.net/project/showfiles.php?group_id=10072地址下載到,也可以在http://sourceforge.net/project 上下載到最新的或其它版本的WinCVS。)由于是軟件界面配置,所以針對界面選項填入相應的參數即可,在此不再贅述。

            2、windows下CVS客戶端的配置
            同樣我們以WinCVS為例來介紹。安裝這個WinCVS不用再啰嗦一遍了吧,跳過,來看配置過程!

            2.1 配置WinCVS
            選擇Admin->Preferences…,在出現的界面上進行一般選項的設置:
            1) Authentication:用來配置cvs服務器的認證方式,可以從下拉框中選擇其它的認證方式,不過一般只要選擇默認的pserver方式就可以,要注意的是必須與cvs服務器配置時所指定的認證方式一致;
            2) Path:用來配置cvs在服務器上的主目錄路徑,也就是服務器上用進行cvs初始化的目錄,如:/home/cvsroot;
            3) Host Address:用來配置cvs服務器所在服務器的地址,可以是IP地址,也可以是DNS名,如:10.104.1.204;
            4) User name:用來配置要使用些WinCVS來登錄CVS服務器的用戶名,如:cvsyxwu,用戶的登錄必須由管理員把其添加cvs用戶組中;
            5) CVSROOT:此項一般都不需要用戶進行修改,用戶在輸入上邊的幾個選項時,系統將自動根據用戶的輸入生成此項的相應內容。
            6)在上一個界面上選擇“Globals” ,進行全局選項的設置,此項的配置主要是要注意這幾選項:
            第一,Checkout read-only不要選上,否則,checkout出來的源代碼將不允許用戶進行修改,并且此選項默認是選中的;
            第二,Prune (remove) empty directories也不要選上,否則,會自動刪除空目錄;
            第三,對一般配置沒有特殊要求的,把Dirty files support、Supply control when adding與TCP/IP compression選項選中;

            2.2 登錄WinCVS服務器
            選擇Admin->login,將出現如下對話框要求用戶輸入登錄口令。輸入口令后,選擇“OK”按鈕,如果CVS服務器與WinCVS的配置都沒出錯的話,將在CVS的狀態欄中提示:
            cvs -z9 -d :pserver:cvsyxwu@10.104.1.204:/home/cvsroot login
            Logging in to :pserver:cvsyxwu@10.104.1.204:2401/home/cvsroot
            ***** CVS exited normally with code 0 *****
            code 0表示正確的登錄;而如果出錯的話,將是code 1,那么要根據錯誤的提示進行相應的修改。

            2.3拷貝相應模塊代碼并進行開發
            1) 在workspace中的Modules選中要存放checkout模塊的目錄;
            2) 選擇Create->Checkout Modeles,將出現一個對話框,需要進行選擇。其中,Module name and path on the server就是要存放checkout 內容的目錄,由用戶輸入;而Local folder to checkout to就是第一種用戶所選擇的目錄。
            3) 至此你就可以在剛才check out的代碼上進行修改或開發了。

            四、結束語
            如果你是通篇讀到這里,那么到這里,你基本上已經能為自己或公司配置一個實用的CVS服務器與CVS客戶端了,無論是在Linux下,還是在Windows下。謝謝你的耐心與信任,同時也對你的小有成就小小的祝賀一下。在最后飄揚要申明的是,本教程里的大部分內容是由網上多篇介紹CVS的文章提取而來,飄揚只是用自己的邏輯和語言將這些內容串聯起來。在此,飄揚對這些文章的原作者深表感謝。如還有不明之處,請聯系飄揚,你可以到我的博客飄揚博客http://www.piaoyang.org 給我留言或QQ47720194,我會盡力解答你的問題。以此拙作,希望能給大家帶去些微的幫助。

            本文為飄揚原創,首發飄揚博客http://piaoyang.org,作者郵箱piaoyang168#163.com,請尊重版權,轉載請保留本行說明。
            posted on 2009-03-27 15:34 thronds 閱讀(1910) 評論(0)  編輯 收藏 引用 所屬分類: Linux/Unix高級技術工程管理
            伊人热热久久原色播放www| 91久久精品视频| 久久精品国产欧美日韩| 九九热久久免费视频| 久久亚洲精品无码aⅴ大香| 中文字幕亚洲综合久久菠萝蜜| 日韩一区二区三区视频久久| 久久91精品国产91久久户| 狠狠精品久久久无码中文字幕| 青青热久久国产久精品 | 中文成人久久久久影院免费观看| 人妻中文久久久久| 狠狠88综合久久久久综合网| 国产精品成人精品久久久| 亚洲AV乱码久久精品蜜桃| 久久久中文字幕| 久久亚洲私人国产精品| 久久妇女高潮几次MBA| 色99久久久久高潮综合影院| 一本色道久久综合亚洲精品| 久久国产一片免费观看| 精品久久人妻av中文字幕| 2021久久精品免费观看| 伊人久久大香线蕉精品| 久久国产热精品波多野结衣AV| 97精品伊人久久久大香线蕉| 久久AAAA片一区二区| 99麻豆久久久国产精品免费| 国产精品久久久久影院色 | 亚洲成色WWW久久网站| 精品视频久久久久| 久久综合久久综合九色| 久久99国产精品99久久| 久久久av波多野一区二区| 色综合久久无码五十路人妻 | 久久久国产精品亚洲一区 | 国产亚洲成人久久| 99久久精品无码一区二区毛片 | 久久精品亚洲中文字幕无码麻豆 | 久久综合狠狠色综合伊人| 久久综合丝袜日本网|