class="22223">
作者:Al;Dev;(Alavoor;Vasudevan);
[email protected] 譯者:Cyril;Huang;
[email protected] v7.0,;20;Feb;2000;翻譯日期:;5;April;2000;
--------------------------------------------------------------------------------
這份文件是一份;"實際操作的說明";,以便於能使您很快的設定;CVS/RCS;原始程式碼控制系統。這份文件裡也有一些將;CVS;上常用的混合命令包成可設定的;shell;scripts;。這些;scripts;為;CVS;提供了一個簡單的使用者介面。這份文件的內容不僅能適用於;Linux;系統也適用於其他像;Unix;的系統,例如Solaris,;HPUX,;AIX,;SCO,;Sinix,;BSD,;SCO;等等。;
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1.;簡介
原始碼控制系統是一個必須能管理那些在軟體計劃發展時原始碼所做的改變。軟體開發者需要一個完整的原始碼改變歷史紀錄,以便於在發生問題時,能夠追溯到以前穩定的版本。既然原始程式碼對於任何的軟體計劃與開發,都是花時間與金錢中最關鍵的部分,所以花時間藉由使用原始碼控制系統像;CVS;和;RCS;來安全的保護(safe-guarding)原始程式碼是非常重要的。;
CVS;(Concurrent;Version;Control;System);是一個能讓很多程式開發者同時做軟體開發的非常強大工具。它使用了RCS;的檔案規定格式但多了一層像應用程式介面的包裝,架在;RCS;的上層。;
(譯注:;RCS;是較老的版本控制,一個受;RCS;管制的檔案看起來是這樣子的;proj1.c,v;,CVS;沿用了一些;RCS;的規定。);
CVS;能夠紀錄你的檔案的歷史紀錄(;通常是原始程式碼,但是其他型態的檔案則不一定)。;CVS;只存了不同版本中檔案的差異,而不是你所建立的每個版本中的每個檔案。;CVS;也保持了一個何時,何人更改檔案,為什麽更改檔案等等不同觀點的歷史紀錄。;
CVS;對於軟體的發行和多人同時更改目前原始碼的管理是非常的有幫助。他並不只是要對單一目錄下的檔案提供版本控制,相反的,CVS;更提供了多層有組織的目錄檔案的版本控制。在這個目錄下除了你的原始程式碼外,還包含有一個;CVS;所建立的改版控制目錄與檔案。;
這些目錄與檔案最後被合並在一起形成一個軟體的發行。;
CVS;能被使用在;"C",;"C++",;Java,;Perl,;HTML;和其他檔案。;
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2.;那一種版本控制系統適合我?;CVS;或;RCS
CVS;實際上是架在;RCS;之上的,;CVS;只是一堆更強大能控制一個有完整原始程式碼階層目錄的工具。我們非常強烈的推薦您使用;CVS,因為您能夠很有彈性的用;perl;,;korn;bash;shell;等;scripts;語言設定您自己的;CVS;系統。請看一些;korn;shell;scripts;的□例;Shell;Scripts;。;
CVS;的優點;
CVS;是非集中式的管理,使用者從儲存櫃;(repository);登出一個檔案目錄,並且有他自己的獨立的穩定目錄樹。;
CVS;能夠在發行整個計劃的原始目錄樹中"蓋上印記";("STAMP")。;
CVS;能夠使大家同時修改檔案。;
CVS;能夠用;shell;scripts;或;perl;設定成檔案鎖住成單一使用或同時修改檔案模式。;
CVS;的缺點;
需要比;RCS;多一點的管理。;
非常成熟復雜的系統,是目前應用上已有的最高技術。(感謝網友
[email protected]來信指證我的錯誤);
有豐富的命令還有命令選項,因此對於初學者來說有很陡的學習曲線。簡單使用的;shell;scripts;可在這裡找到;Shell;Scripts;。;
RCS;的優點;
RCS;非常容易設定。較少一些管理上的工作。;
RCS;用在一個每個人在一起工作的集中區域。;
RCS;對於簡單的系統很有用。;
非常嚴謹的單一檔案修改模式;-;同步與同時是不允許的。;
RCS;的缺失;
由於使用單一目錄控制與檔案鎖住,不可能由很多的程式設計者做同時的開發。因為單一目錄下很多人對檔案的改變,會造成;make;的使用錯誤。;
不能對整個軟體計劃戳上發行(releases)的印記。;
這份文件也包含一些;shell;scripts;以提供簡單的命令來作登出;(check-out),;登錄;(check-in),;送交(commit);檔案的動作。請看一些;shell;scripts;的□例;Shell;Scripts;。;
對於;RCS;而言,請看;Linux;CD-ROM;裡面的RCS;mini-howto。;
--------------------------------------------------------------------------------
cd;/mnt/cdrom/Redhat/RPMS
ls;-l;howto-6.0-*.noarch.rpm
rpm;-qpl;howto-6*;|;grep;-i;rcs;
--------------------------------------------------------------------------------
或者看;http://sunsite.unc.edu/LDP/HOWTO/mini/RCS-HOWTO.html
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3.;設定;CVS;
首先,你需要安裝;CVS;套件,在Redhat;Linux;上請用;
--------------------------------------------------------------------------------
cd;/mnt/cdrom/Redhat/RPMS
rpm;-i;rcs*.rpm
rpm;-i;cvs*.rpm
To;see;the;list;of;files;installed;do;-
rpm;-qpl;cvs*.rpm;|;less
--------------------------------------------------------------------------------
然後用;j,;k,;CTRL+f,;CTRL+D,;CTRL+B,;CTRL+U;或上下左右鍵,;page;up/down;浏覽一下結果。請用;'man;less';查看;less;的用法;
在其他的;unix;機器上,你可能需要下載;RCS;CVS;的;tar.gz;檔案,然後根據;README,;INSTALL;檔的指示來安裝;CVS。請到;http://www.cyclic.com;和;http://www.loria.fr/~molli/cvs-index.html
3.1;CVS;的專有環境變數;
下列的環境變數需要在;/etc/profile;檔中設定,/etc/profile;是對所有使用者都有效的內定值設定檔,如果沒有設定;/etc/profile,那麽你應該加這些設定到你自己的設定檔;;/.bash_profile;內。;
--------------------------------------------------------------------------------
export;EDITOR=/bin/vi
export;CVSROOT=/home/cvsroot
export;CVSREAD=yes
--------------------------------------------------------------------------------
建造一個目錄來存你原始程式碼的儲藏櫃;(repository);並且給予;unix;group;與;user;讀寫的權力。;(譯注:這個目錄下將會有很多你將來的原始碼。);
--------------------------------------------------------------------------------
export;CVSROOT=/home/cvsroot
mkdir;$CVSROOT
chmod;o-rwx;$CVSROOT
chmod;ug+rwx;$CVSROOT
--------------------------------------------------------------------------------
要初始化你的;CVS;,並且從現在開始把你的原始程式碼交給;CVS;管理。請做;-;
--------------------------------------------------------------------------------
cvs;init
(譯注;這個初始化的動作在於建造一個儲藏櫃,是一個目錄$CVSROOT/。
同時;$CVSROOT/CVSROOT;也在此時被建造,這個模組目錄下面是控制你CVS的administration;files,
裡面的檔案做一些修改後,可以使CVS更強大好用。
$CVSROOT;下的目錄每個都是;module;的意思,一個;module;可以就是一個專案計劃。
但也可能是你把一個計劃拆成很多;module;,不同;module;交給不同的;team;去發展。)
#;一定要換到想要;CVS;控制的計劃目錄下喔
cd;$HOME/my_source_code_dir
#;把整個目錄納入管理用;import;命令
cvs;import;my_source_code_dir;V1_0;R1_0
(譯注:其實是;cd;到你的project下後,cvs;import;模組;vendor_tag;release_tag,
不一定要是目錄名稱;my_source_code_dir,vendor_tag,;release_tag;只是識別用的東西,
將來你可以用;tag;來存取你要的特定版本
這個動作會在 $CVSROOT/ 下開個";模組;"的目錄,然後把;my_source_code_dir;整個放到;CVS;下管理,
$HOME/my_source_code_dir;就沒用了。import;的動作是把已經寫好的一堆;code;擺進來,
如果將來想新增檔案xxxx.c,必須先寫好xxxx.c,再用;cvs;add;xxxx.c)
--------------------------------------------------------------------------------
3.2;從;RCS;轉換到;CVS;系統;
要轉換已經存在的;RCS;檔案到;CVS;,請使用下面的;script;。並確定你從你的;Linux;CD-ROM;安裝了;korn;shell;套件;pdksh*.rpm。;
注意;:;Korn;shell;/bin/ksh;在你從Linux;CD-ROM;安裝;pdksh*.rpm;時就會產生;
--------------------------------------------------------------------------------
#!/bin/ksh
#############################################################
#;Program;to;Migrate;the;existing;source;code;in;RCS;to;CVS;
#
#;Needs;the;korn;shell;RPM;package;;pdksh*.rpm;from;Linux;
#;contrib;cdrom
#############################################################
#
#;rcs2cvs;-;convert;source;tree;from;RCS;to;CVS
#
#;project;to;convert
PR