2011年10月14日 星期五

CVS


CVS Server 


1.先查看是否安裝cvs

#rpm -qa | grep cvs
一般安裝在 /usr/bin/cvs,
如果未安裝,到www.cvshome.org下載一個最新的rpm安裝即可

2.建立cvs user group,便於管理cvs User
#groupadd cvs

3.建立cvsroot User,屬於cvs組(組名必須為cvs),根目錄為/home/cvsroot,
不允許 login
#useradd -g cvs -s /sbin/nologin cvsroot

4.改變/home/cvsroot的目錄屬性
#chmod 775 /home/cvsroot

5.初始化cvs source,此操作產生目錄 /home/cvsroot/CVSROOT,
其下為一些初始化檔
#cvs -d /home/cvsroot init

6.Create可以login CVS服務的用戶及密碼,需要創建檔passwd
#vi /home/cvsroot/CVSROOT/passwd
檔內容如下:
dawei:xxxxx:cvsroot

dawei為username
注意:cvs user 和 server user是可以不一樣的


7.xxxxxx為密碼,由以下檔產生:
#vi /home/cvsroot/passwdgen.pl 
passwdgen.pl檔案內容:

#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext} ";

8.如果密碼設為:123456,則敲入:
#./passwdgen.pl "123456"
電腦會產生一組加密密碼例如是ABCDEF 把她複製下來
#vi /home/cvsroot/CVSROOT/passwd
把XXXXXX修改成ABCDEF


9.加入cvs service
#vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service


10.修改設定黨
#vi  /etc/xinetd.d/cvs
主要修改的有


        disable                 = no
        server_args             = -f --allow-root=/home/cvsroot pserver
#       bind                    = 127.0.0.1


修改完成後變成


service cvspserver
{
        disable                 = no
        port                    = 2401
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root
        passenv                 = PATH
        server                  = /usr/bin/cvs
        env                     = HOME=/var/cvs
        server_args             = -f --allow-root=/home/cvsroot pserver
#       bind                    = 127.0.0.1
}

11.重新啟動
#/etc/rc.d/init.d/xinetd restart


若出現沒有 xinetd,yum即可
#yum install xinetd


12.檢查cvspserver服務是否已經啟動
#netstat -l |grep cvspserver 
其結果如下:
tcp 0 0 *:cvspserver *:* LISTEN


CVS client

1.首先登入CVS


有兩種方式
第一種 只接打
#cvs -d ":pserver:username@X.X.X.X:/home/export" login
第二種 寫在~/.bash_profile內
#vi ~/.bash_profile
內容如下
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export CVSROOT=:pserver:dawei@10.74.11.36:/home/cvsroot 

是增加export CVSROOT=:pserver:username@X.X.X.X:/home/cvsroot 
X.X.X.X 是server ip 
修改完成之後
#cvs login
會跑出

Logging in to :pserver:lin@10.74.11.36:2401/home/cvsroot
CVS password:


打完密碼就可以了
若遇到 No route to host
可能是防火牆沒關


在你的目錄底下
#ls -all
應該會出現.cvspass黨
#cat .cvspass
/1 :pserver:lin@10.74.11.36:2401/home/cvsroot A4Kw1"R
這是記錄著你登入的資訊,這資料會一直存在,除非你把它刪掉或其他。


2.clinet 在server建立資料夾
#cvs import -m "CVS demo test" da r0 start
此時在server就會多出da這個資料夾


再把此資料夾在check out
#cvs co da  or #cvs checkout da
#ls
就會發現多個da




#cvs status da or  #cvs st da
會顯示所有檔案的狀態

Up-to-date       : 最新版
Locally Modified : 已修改
Needs Patch      : 需更新
Needs Merge      : 需合併





在進入到da
#cd da
#ls
你就會看到一個CVS的資料夾
#cd CVS
#ls
就會看到Entries  Repository  Root


先來看Repository
#cat Repository
就是你倉庫的名稱
#cat ROOT
就是你登入的資訊
#cat Entries
目前版本 寫入時間(格林威治)


#pwd

/home/dawei/da
#vi test  /建立一個文字檔
hello word  /裡面內容

#cvs add test  /加入到server 會幫你查詢看看是否有重複的檔名

cvs add: scheduling file `test' for addition
cvs add: use 'cvs commit' to add this file permanently
#cvs ci test
or #cvs ci -m "增加一列註解" test


ci 是存入之意,-m 後面接續本次存入的記錄訊息,主要目的,是用來讓自己及合作伙伴,將來能對這次的修改動作有跡可循。若您沒有加 -m "記錄訊息" 也無妨,cvs 會主動叫出 vi,要求您必須輸入記錄訊息,如以下操作畫面:

"增加一列註解"
CVS: ----------------------------------------------------------------------
CVS: Enter Log.  Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS:    test
CVS: ----------------------------------------------------------------------


按 wq 存檔離開, 出現以下畫面:



RCS file: /home/cvsroot/da/test,v
done
Checking in test;
/home/cvsroot/da/test,v  <--  test
initial revision: 1.1
done


#cvs st test /用st來看一下test目前狀態
===================================================================
File: test              Status: Up-to-date
   Working revision:    1.1
   Repository revision: 1.1     /home/cvsroot/da/test,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)
參考文獻


CVS Server for Linux 安裝步驟

CVS 入門