• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • CVS的配置和使用

    發表于:2008-02-02來源:作者:點擊數: 標簽:配置管理CVS
    cvs是一種 版本控制 系統,它不同于一般的版本控制系統,它可以實現版本的并發管理,即可已有多個用戶同時改動同一個文件而不會互相影響,然后不同的用戶將它們各自修改的文件提交到cvs服務器上,有cvs來進行文件之間的比較,進而把這些不同的部分按照某種算
    cvs是一種版本控制系統,它不同于一般的版本控制系統,它可以實現版本的并發管理,即可已有多個用戶同時改動同一個文件而不會互相影響,然后不同的用戶將它們各自修改的文件提交到cvs服務器上,有cvs來進行文件之間的比較,進而把這些不同的部分按照某種算法進行合并形成一個新的版本。
    cvs服務器一般架設在unix系統上,雖然也有可以在Windows上運行的服務器版本,但是其性能表現遠不如在unix上面表現的好, 但是cvs的客戶端在Windows下卻可以工作的很好。我在這里講簡單地介紹一下在Linux下配制cvs服務,以及在Windows下客戶端的設置情況。
    首先我們先說一下如何在Linux上設置cvs服務,絕大多數的Linux發行拌種都包含了cvs,如果你的發行版本中沒有或者你向是用最新的cvs版本,你可以http://www.cvshome.org去取得最新的服務器版本,這里講述的是以1.10版為基礎的, 它應該適合更新的版本.
    如果你是從http://www.cvshome.org上的到的.tar.gz形式的源代碼版本,參照源代碼中的相關的說明文件,安裝指導來編譯程序,然后進行安裝,如果你是用Linux發行版中的cvs包進行安裝,執行相應的包管理工具。比如在Redhat中你可以是用下面的命令來安裝cvs.rpm -ivh cvs-1.10.8-3.i386.rpm在安裝完成后,我們就可以進行相應的配置。一般cvs是用pserver的認證方式作為一種服務在Linux上運行,先要確定系統里/etc/services文件有cvs服務的入口,一般得有以下兩行:
    cvspserver 2401/tcp # cvs client/server operations
    cvspserver 2401/udp # cvs client/server operations
    cvs服務是通過.netd或者是xinetd來啟動的。對于inetd,修改/etc/inetd.conf,添加以下的句子:
    cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/cvsroot pserver
    由于在較新的Linux發行版(如:RedHat7.x)中都是用新xinetd代替了inetd,要用xinetd來啟動cvs服務你需要進入到/etc/xinetd.d/目錄,然后編輯一個文本文件(名字隨意),這里是用cvspserver作為文件名,這個文件的內容如下所示:
    service cvspserver
    {
    socket_type = stream
    wait = no
    user = root
    env = HOME=
    server = /usr/bin/cvs
    server_args = --allow-root=/cvsroot pserver
    }
    注意上面的service后面的名稱一定要和你在/etc/service文件中的cvs服務名稱一樣,在server_args行我們指定了cvs使用pserver認證方式,可能容易產生誤解的是env = HOME=這一行,添加這一行的目的就是為了解決在執行一些cvs操作時產生的讀取/root/.cvsignore文件的錯誤,上面env那行的意思就是在運行cvs服務的時候將環境變量HOME置空,這樣雖然執行cvs的用戶是root,但是由于沒有了HOME這個環境變量,所以cvs就不會在去讀取/root/.cvsignore文件了。
    到這里我們就配置完了cvs的啟動所需要的文件,但是要使cvs正常運行還需要對需要使用cvs的用戶進行設置,下面是我在配置cvs是使用的方法。首先建立一個用戶組cvs,可以使用groupadd或者addgroup命名,也可以直接編輯/etc/group文件添加這個組,然后添加一個用戶cvsroot, 然后修改/etc/passwd文件使cvsroot用戶的缺省組是cvs組,而不是cvsroot組。建立/cvsroot目錄,然后修改/cvsroot的屬主及屬性:
    #chown cvsroot.cvs /cvsroot
    #chmod 755 /cvsroot
    (原文這里是771,但是我們要配置cvsweb.cgi,下面再談)。
    對cvs進行初始化:cvs -d /cvsroot init
    這樣cvs服務器就可以使用了,用cvs -d :pserver:cvsroot@host:/cvsroot login登陸,輸入cvsroot用戶在服務器上的口令,沒有出現錯誤提示就表示成功了。
    下面講述Windows下客戶端的配置,我只會用wincvs,覺得很不錯,不用記那些繁瑣對命令:)可以從http://www.cvshome.org找到相應的下載地址,在linuxforum也有下載,3M多一點。啟動wincvs在Admin菜單中選擇preferences然后在global頁中設置CVSROOT,就是:pserver:cvsroot@host:/cvsroot。在認證方式中選擇passwd file on the cvs server, 在下面的版本號中選擇合適的版本,執行Admin菜單中的login,在提示框輸入口令,如果Output窗口出現以下提示:
    *****CVS exited normally with code 0*****
    就表示我們現在可以在Windows下使用cvs服務了。我開始不知道成功了,還滿大街的問wincvs怎么了:(
    英文好就看wincvs自帶的幫助文擋,我也推薦兩個文檔:)
    wincvs.pdf winhtml.zip
    特別是這個pdf文檔確實不錯,還是中文的:)
    如果你想在網頁里給大家顯示你的項目,那么cvsweb是一個不錯的選擇。這是一個perl程序,可以到以下地址找到最新版:
    http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi
    現在的版本是1.93,記得要用新版,1.8以下有一個小小的漏洞,可以到綠盟查一查。
    由于是cgi程序,是以nobody用戶執行的,所以/cvsroot的屬性要設成775。開始我按章照搬,把屬性改成771,結果項目的目錄就是不出來,埋葬了半天的青春:(還有記得把/cvsroot/CVSROOT/history的屬性改成666。cvsweb.conf里%CVSROOT數組的Configuration設成/cvsroot,就是cvs倉庫的路徑不要那個長長CVSROOT變量。這些其實在它的說明文檔和程序注釋里都講到了,只是這個世界是懶人的世界:)
    一切都陽春白雪,可以埋頭寫程序了?只是cvs還有一個小小的DoS漏洞要跟大家說一下:(每個cvs的操作過程會以操作用戶的身份在/tmp下臨時建一個鎖定了的目cvs_servPID,這時如果有人建了大量的同類文件就會使cvs的操作出錯,會提示:
    cannot change permissions on temporary directory
    Operation not permitted
    下面是測試的perl程序:
    #!/usr/bin/perl
    #$min和$max的值根據實際情況修改
    $min=400;
    $max=4000;
    for ($x=$min;$x<=$max;$x++) {
    open CVSTMP, ">>/tmp/cvs-serv$x" or die "/tmp/cvs-serv$x: $!";
    chmod 0600, "/tmp/cvs-serv$x";
    close CVSTMP;
    }
    解決方法:
    使用server.c中的mktemp(3)函數或者其它任何可以產生唯一文件名的方法。在/tmp/目錄所在的分區使
    用空間配額也能解決部分問題。 主要還是扎緊籬笆,莫讓別人闖進來,這畢竟是一個local的問題。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>