RedHat Enterprise Linux 5.5之CVS版本控制服務

系統版本:RedHat Enterprise Linux 5.5
 
 
一,什麼是CVS?
Concurrent Versions System 版本控制系統
二,CVS主要面對什麼狀況
1.修改代碼時不當心產生了一些bug但當時沒有發現,等發現後又須要回到舊版本作修改
2.成員之間在沒有協商好前很容易覆蓋文件,一些編輯器如Emacs可保證同一個文件不會兩次修改,但使用不一樣的編輯器保護就沒有做用了。
3.每個新版本就是一個新文件生成,但只記錄此版本與上個版本之間的變化部分,而不是從新複製佔用過多空間。
4.版本間的不一樣部分保留在一個文件中。
三,CVS的幾個重要概念
1.倉庫(repcsitory)
存儲所有的版本控制下的文件的備份,一般不能直接訪問必須經過cvs命令拷貝到本地修改後在同步回倉庫。倉庫和工做目錄是隔離的。
2.版本(revision)
每一個文件都獨立的版本系統,以下
file1_版本1----file1_版本2----file1_版本3
file2_版本1----file2_版本2----file2_版本3
3.分支(branch)
好像file1+file2實現了一個功能成爲整個項目的一個分支
修改一個分支不會影響到其餘分支
4.衝突(conflct)
徹底的純文本衝突沒法被cvs解決,好比user1修改x=1後上傳,而user2在以後的一分鐘修改同一行代碼成x=2後上傳,那麼user1依然認爲x=1但當user1調用x函數計算x+y時發現返回截獲增長了1。這種衝突只能由用戶自身溝通解決。
四,CVS如何解決上述問題的
1.採用開發者隔離,每一個人在修改代碼前須要先下載代碼到本地的工做目錄(workspace),修改後在上傳
2.採用策略是copy----modify----merge
拷貝到本地----修改代碼---上傳和之前版本合併內容
 
 
下面咱們來看看cvs服務器的創建過程
1.建立用戶和組
咱們的想法是能使用cvs服務器的都在cvs這個組中,cvsroot成爲這個組的小管理員,咱們在位每一個編程人員設定本身喜歡的用戶名來登陸cvs服務器.
我先創建cvsroot用戶和組,並直接把cvsroot加入到cvs組中
我在爲一個編程人員建立他喜歡的帳戶
-g是直接把fish加入到cvs組中
-M是在創建fish時不產生家目錄
 
 
2.查看端口配置狀況,看到2401在tcp和udp協議上都有便可
 
 
3.修改啓動腳本
vi  /etc/xinetd.d/cvs
由於cvs屬於xinetd管理,因此只要重啓xinetd服務便可重啓cvs
 
 
4.從新啓動服務
 
 
 
5.初始化cvs服務
 
6.修改環境變量讓系統啓動時就能夠認識cvs的倉庫
vi  /etc/profile
 
7.無需重啓馬上更新環境變量
 
 
8.爲了能讓開發人員都能使用倉庫注意給權限
 
 
9.默認狀況下cvs使用的是系統用戶登陸的,也就是/etc/passwd裏的用戶,爲了考慮系統安全,咱們可使用獨立的用戶管理將用戶名和密碼保存在/home/cvsroot/CVSROOT/passwd文件中,這樣作的好處是你修改了系統帳戶的權利在cvs中對應的帳戶也跟着改變,而且cvs帳戶的密碼和系統帳戶的密碼能夠不一致,這樣當你登陸cvs後你輸入cvs密碼,而有效保護了對應的系統帳戶密碼,由於cvs並無提供相似能夠把明文密碼轉成密文(MD5)的命令因此借用了apache服務的命令來作的.
建立cvs獨立passwd命令爲   htpasswd  -c  passwd  cvsroot (/home/cvsroot/CVSROOT下執行)
固然你也能夠映射其餘用戶,注意的是必須保證/home/cvsroot/CVSROOT有權限能被其餘用戶所訪問
看看../CVSROOT/passwd文件的樣子
 
 
10.如今有個新問題就是若是/home/cvsroot/CVSROOT/passwd文件中沒有這個用戶,cvs依然會去詢問系統的/etc/passwd是否有這個用戶及請求驗證,那這樣最後問來問去又須要輸入系統的帳戶和密碼仍是有風險.因此我乾脆就算在CVSROOT/passwd下找不到這個用戶也不去問系統有沒有這個用戶.
vi /home/cvsroot/CVSROOT/config
此時咱們能夠在/etc/passwd和/etc/shadow裏吧關於cvsroot和fish的信息刪除掉.我已經悄悄的幹掉他們連個了.
 
11.如今你能夠啓動cvs服務了
 
12.咱們看看服務啓動後驗證一下,端口號已經開啓
 
 
13.如今咱們就能夠用剛纔的fish開發帳戶登陸測試一下了
 
 
14.你能夠配置用戶對倉庫文件中的權限,readers文件記錄具備"只讀"權限的用戶,writers文件記錄擁有讀寫權限的用戶,readers文件比writers優先,也就是說出如今readers中的用戶將會是隻讀的,無論writers文件中是否存在該用戶
 
 
 
 
********************************************
另一種創建CVSROOT/passwd文件的方式,參考一下
 groupadd cvs
 useradd -g cvs -M test1
 passwd test1
之後就用test1來登陸cvs
 cp /etc/shadow  /home/cvsroot/CVSROOT/passwd
 chmod 0644 /home/cvsroot/CVSROOT/passwd
 vi /home/cvsroot/CVSROOT/passwd
只保留cvsroot和test1的記錄,形式以下
 cvsroot:$123456789:cvsroot
 test1:$12345sdjkfe:test1
而後再系統中刪除掉test1和cvsroot  vi /etc/passwd和 /etc/shadow
**********************************************
 
期待能對開發人員之間的合做有所幫助.
相關文章
相關標籤/搜索