<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    分享java帶來的快樂

    我喜歡java新東西

    cvs 安裝指南

    CVS版本控制軟件的安裝配置與使用

    http://www.chinaunix.net/ 作者:zdm    修改后發布

    CVS版本控制軟件的安裝配置與使用

    (一) 軟件的安裝:
    1. 軟件的獲取:CVS是一個典型的Server/Client端軟件,有UNIX版本的CVS 、Linux版本的CVS,和WINDOWS版本的CVS,在下載的軟件包中已經包含了Server端和Client端,但是我們在工作中一般都是使用Windows操作系統,所以我們可以再下載一個Windows下CVS的Client端軟件WinCVS。在以下網站可以獲取最新版本的CVS。
    http://www.cvshome.org/
    2. 軟件的版本:現在UNIX下最新版本的CVS是cvs-1.11.5.tar.gz
                Windows下CVS的Client端軟件WinCVS版本是WinCVS1.3
    3. 軟件的安裝:
    把你下載的cvs-1.11.5.tar.gz放到UNIX機器的一個臨時目錄中,進入到此目錄,
    #gunzip  cvs-1.11.5.tar.gz
    后得到cvs-1.11.5.tar文件,然后再執行:
    #tar xvf cvs-1.11.5.tar
    后得到一個cvs-1.11.5的目錄,進入到此目錄后執行下列命令:
    #./configure
    #make
    #make install
    如果在安裝過程中沒有錯誤信息出現,則說明你的安裝是成功的,如果有報錯請根據錯誤信息檢查你的系統設置
    代碼:

    #groupadd cvs
    #useradd -g cvs -s /sbin/nologin cvsroot
    #passwd cvsroot


    OK,用戶已經建立好了,cvsroot就是我們做CVS操作使用的。

    2.修改配置文件

    代碼:
    #more /etc/services | grep cvspserver


    看看是否有

    代碼:
    cvspserver 2401/tcp #CVS client/server operations
    cvspserver 2401/udp #CVS client/server operations


    這2行。系統自帶了CVS時,這2行也已經有了,只需要確認一下。如果沒有,請自己加上去。
    然后必須創建啟動腳本:

    代碼:
    #vi /etc/xinetd.d/cvspserver


    內容如下

    代碼:
    service cvspserver
    {
    disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/bin/cvs
    server_args = -f --allow-root=/home/cvsroot pserver
    log_on_success += USERID
    log_on_failure += USERID
    }

    必須注意權限設置/home/cvsroot目錄的權限要有寫的權限

    其中server指定CVS可執行文件路徑,默認安裝就是/usr/bin/cvs。server_args指定源代碼庫路徑及認證方式等,例子中把源代碼存放在cvsroot的主目錄中,也可以另外指定路徑,但必須注意權限設置,pserver是密碼認證方式,這種方式的安全性要差一些,但操作起來比較簡單。請注意每行等號左右都有一個空格,否則無法啟動服務。

    3.初始化CVS
    切換到cvsroot用戶,然后進行初始化:

    代碼:
    #cvs -d /home/cvsroot init


    這個路徑應該與cvspserver文件中指定的路徑相同,初始化后會在此路徑下面創建CVSROOT目錄,存放用于CVS管理的一些文件。此時重新啟動xinetd服務,CVS服務器應該能夠啟動了。

    代碼:
    #service xinetd restart


    當然,重新啟動計算機也可以。確認是否啟動:

    代碼:
    #netstat -l | grep cvspserver


    如果能看到

    代碼:
    tcp 0 0 *:cvspserver *:* LISTEN


    說明已經正常啟動,沒有的話請重新檢查配置過程是否有錯誤或者遺漏。最后還必須檢查防火墻的設置,把2401端口打開。

    4.用戶管理
    CVS默認使用系統用戶登錄,為了系統安全性的考慮也可以使用獨立的用戶管理。CVS用戶名和密碼保存在CVSROOT目錄下的passwd文件中,格式為:

    代碼:
    用戶名:密碼:系統用戶


    也就是說,它把CVS用戶映射到系統用戶,這樣我們就可以通過系統用戶的權限設置來分配給用戶不同的權限,而不需要讓用戶知道系統用戶名和密碼。
    passwd文件默認并不存在,我們必須自己創建。文件中的密碼字段使用MD5加密,不幸的是CVS沒有提供添加用戶名的命令,所以我們借用Apache的命令來完成這項工作:

    代碼:
    #htpasswd passwd username


    這個命令為username指定密碼,并保存在passwd中,文件不存在時會自動創建。htpasswd命令不是為CVS而設,因此總有一些遺憾,它不能自動添加映射到的用戶名,不過沒關系,我們設置好密碼后,自己把這部分加上。我的做法是映射到cvsroot用戶,如果需要映射其他的用戶,請注意給相應的目錄設置好權限,否則CVS用戶可能無法訪問源代碼倉庫。
    要徹底防止使用系統帳號登陸,可以編輯CVSROOT目錄下的config文件,把

    代碼:
    #SystemAuth=no


    這一行前面的#去掉,CVS就不會驗證系統用戶了,否則當用戶名不在passwd文件中時,CVS會進行系統用戶的驗證。
    此外還必須配置讀寫權限,使用CVSROOT目錄下的readers和writers文件進行這個工作。這2個文件默認也是沒有的,沒關系,自己創建就可以了。readers文件記錄擁有只讀權限的用戶名,每行一個用戶;writers文件記錄擁有讀寫權限的用戶名,也是每行一個用戶。注意,readers文件比writers優先,也就是說出現在readers中的用戶將會是只讀的,不管writers文件中是否存在該用戶。

    配置完畢,先測試一下:

    代碼:
    #cvs -d ":pserver:username@127.0.0.1:/home/cvsroot/repository" login


    這里假設用戶名是username,本機登陸。出現密碼提示,輸入正確的密碼后,登陸成功。如果提示訪問被拒絕,請檢查用戶權限、目錄權限以及防火墻設置。建議設置環境變量CVSROOT:

    代碼:
    #export CVSROOT=:pserver:username@127.0.0.1:/home/cvsroot


    以后就不需要輸入-d參數了,但-d參數會覆蓋這個環境變量的設置。

    5.源代碼倉庫的備份和移動
    基本上,CVS的源代碼倉庫沒有什么特別之處,完全可以用文件備份的方式進行備份。需要注意的只是,應該確認備份的過程中沒有用戶提交修改,具體的做法可以是停止CVS服務器或者使用鎖等等。恢復時只需要把這些文件按原來的目錄結構存放好,因為CVS的每一個模塊都是單獨的一個目錄,與其他模塊和目錄沒有任何瓜葛,相當方便。甚至只需要在倉庫中刪除一個目錄或者文件,便可以刪除該模塊的一些內容,不過并不建議這么做,使用CVS的刪除功能將會有一個歷史記錄,而對倉庫的直接刪除不留任何痕跡,這對項目管理是不利的。移動倉庫與備份相似,只需要把該模塊的目錄移動到新的路徑,便可以使用了。
    如果不幸在備份之后有過一些修改并且執行了提交,當服務器出現問題需要恢復源代碼倉庫時,開發者提交新的修改就會出現版本不一致的錯誤。此時只需要把CVS相關的目錄和文件刪除,即可把新的修改提交。

    6.更進一步的管理
    CVSROOT目錄下還有很多其他功能,其中最重要的就是modules文件。這個文件定義了源代碼庫的模塊,下面是一個例子:

    代碼:
    Linux Linux
    Kernel Linux/kernel


    這個文件的內容按行排列,每一行定義一個模塊,首先是模塊名,然后是模塊路徑,這是相對于CVS根目錄的路徑。它定義了兩個模塊,第一個是Linux模塊,它位于Linux目錄中,第二個是Kernel模塊,這是Linux模塊的子模塊。
    modules文件并非必須的,它的作用相當于一個索引,部分CVS客戶端軟件通過它可以快速找到相應的模塊,比如WinCVS。

    7.協同開發的問題
    默認方式下,CVS允許多個用戶編輯同一個文件,這對一個協作良好的團隊來說不會有什么問題,因為多個開發者同時修改同一個文件的同一部分是不正常的,這在項目管理中就應該避免,出現這種情況說明項目組內部沒有統一意見。而多個開發者修改文件的不同部分,CVS可以很好的管理。
    如果覺得這種方式難以控制,CVS也提供了解決辦法,可以使用cvs admin -l進行鎖定,這樣一個開發者正在做修改時CVS就不會允許其他用戶checkout。這里順便說明一下文件格式的問題,對于文本格式,CVS可以進行歷史記錄比較、版本合并等工作,而二進制文件不支持這個操作,比如word文檔、圖片等就應該以二進制方式提交。對于二進制方式,由于無法進行合并,在無法保證只有一個用戶修改文件的情況下,建議使用加鎖方式進行修改。必須注意的是,修改完畢記得解鎖。
    從1.6版本開始,CVS引入了監視的概念,這個功能可以讓用戶隨時了解當前誰在修改文件,并且CVS可以自動發送郵件給每一個監視的用戶告知最新的更新。

    8.建立多個源代碼倉庫
    如果需要管理多個開發組,而這些開發組之間不能互相訪問,可以有2個辦法:
    a.共用一個端口,需要修改cvspserver文件,給server_args指定多個源代碼路徑,即多個—allow-root參數。由于xinetd的server_args長度有限制,可以在cvspserver文件中把服務器的設置重定向到另外一個文件,如:

    代碼:
    server = /home/cvsroot/cvs.run


    然后創建/home/cvsroot/cvs.run文件,該文件必須可執行,內容格式為:

    代碼:
    #!/bin/bash
    /usr/bin/cvs -f \
    --allow-root=/home/cvsroot/src1 \
    --allow-root=/home/cvsroot/src2 \
    pserver


    注意此時源代碼倉庫不再是/home/cvsroot,進行初始化的時候要分別對這兩個倉庫路徑進行初始化,而不再對/home/cvsroot路徑進行初始化。
    b.采用不同的端口提供服務
    重復第2步和第3步,為不同的源代碼倉庫創建不同服務名的啟動腳本,并為這些服務名指定不同的端口,初始化時也必須分別進行初始化。


    CVS環境初始化
    ============

    環境設置:指定CVS庫的路徑CVSROOT
    tcsh
    setenv CVSROOT /path/to/cvsroot
    bash
    CVSROOT=/path/to/cvsroot ; export CVSROOT

    后面還提到遠程CVS服務器的設置:
    CVSROOT=:ext:$USER@test.server.address#port:/home/cvsroot
    CVS_RSH=ssh;
    export CVSROOT CVS_RSH

    初始化:CVS版本庫的初始化。
    cvs init

    posted on 2006-04-26 14:50 強強 閱讀(391) 評論(0)  編輯  收藏 所屬分類: linux 操作系統配置

    主站蜘蛛池模板: 美女一级毛片免费观看| 亚洲欧美成人av在线观看| 一级一片免费视频播放| 男人的天堂亚洲一区二区三区 | fc2免费人成在线视频| 久久亚洲2019中文字幕| 男女一边桶一边摸一边脱视频免费| 免费国产美女爽到喷出水来视频| 成人精品国产亚洲欧洲| 亚洲成AⅤ人影院在线观看| 日日摸夜夜添夜夜免费视频| 中文字幕亚洲无线码| a国产成人免费视频| 亚洲美女激情视频| 久久久www成人免费毛片| 欧美色欧美亚洲另类二区| 亚洲AV伊人久久青青草原| 日韩免费高清播放器| 亚洲高清在线视频| 国产精品免费网站| 免费大片av手机看片高清| 亚洲伊人色欲综合网| 91香蕉国产线在线观看免费| 7777久久亚洲中文字幕| 亚洲国产电影av在线网址| 久久国产免费一区二区三区| 亚洲国产成人超福利久久精品| 日本特黄a级高清免费大片| 国产免费一区二区三区免费视频 | 国产精品久久香蕉免费播放| 污视频网站免费在线观看| 亚洲日韩精品无码一区二区三区| 久久国产免费福利永久| 高潮内射免费看片| 亚洲欧洲日本天天堂在线观看| 国产一级淫片a免费播放口之| 久草福利资源网站免费| 欧美亚洲精品一区二区| 亚洲AV日韩AV天堂一区二区三区| 成年丰满熟妇午夜免费视频| 久久福利青草精品资源站免费|