CVSNT使用方法

# title : CVSNT SERVER Configuration
#
# @author: H819
#
# @version: 0.5
#
# Copyright: free reference,note author name and the article link.
#
# Date :Dce 14th ,2005
#
# History:
#   Dce 14th ,2005,version 0.5


/*
說明:

1.${CVSNT},表示,CVSNT的安裝路徑
2.${CVSNTROOT},表示,CNSNT的 ROOT Repository 路徑
3.本文提到的 CVSNT 一般指 CVSNT Server
*/


****************
* CVSNT 的安裝 *
****************
平臺
CVSNT-2.5.03.2151;
windows xp sp2;
/*
注意:
一般需要 ntfs 格式的系統
CVSNT Server 官方站點
http://www.march-hare.com/
http://www.cvsnt.org/archive/?M=A
這個網址可以下載到原始安裝文件和手冊

*/

安裝 CVSNT-2.5.03.2151
過程略

注意:
1.安裝完成之後,安裝程序會自動把 ${CVSNT} 加入到 path 中
2.cvs.ext 既是 server 又是 client,如果僅作爲 client 端,想要運行 cvs 命令,也必須安裝它;
3.注意設定 CVSNT Repository.

***********************
* CVSNT的用戶驗證方式 *
***********************
CVSNT的用戶驗證方式分兩種

1.Windows系統用戶與CVSNT用戶共存的混合驗證方式:

即 windows 操作系統用戶和 CVSNT 的 passwd 文件定義的用戶都可以作爲 CVSNT 的用戶。
1.1 作爲操作系統的用戶登陸:輸入操作系統的用戶和密碼;
1.2 作爲 CVSNT 的用戶登陸:輸入 passwd 文件中定義的用戶和密碼。
在這種方式,操作系統的管理員帳戶同時也是 CVSNT 服務器的管理員帳戶。

2.CVSNT用戶單一驗證方式:

只有 CVSNT passwd 文件定義的用戶作爲 CVSNT 的用戶。
登陸:輸入 passwd 文件中定義的用戶和密碼。

默認工作模式是混合驗證方式,但是使用單一驗證方式對用戶的管理比較方便一點,因此下面的介紹,基於 CVSNT 用戶單一驗證方式。

***********************
* CVSNT的主要配置文件 *
***********************
CVSNT 服務器安裝完成之後,要定義 ROOT Repository (即上文定義的 ${CVSNTROOT} ),在該目錄中,定義了服務器的各種配置,在這裏可以定義管理選項參數。

本文主要介紹以下幾個文件:config,passwd,admin,group,checkoulist,fileattr.xml,cvswrappers

*** config 文件 ***
只關注文中第一、二行註釋

#Set this to `no" if pserver shouldn"t check system users/passwords
#SystemAuth=yes

SystemAuth: 定義驗證方式,默認是 SystemAuth=yes ,即混合驗證方式。
這項設置默認是註釋掉的,相當於 SystemAuth=yes

如果想要修改爲 CVSNT 用戶單一驗證方式,修改爲 SystemAuth=no
注意,如果修改爲  SystemAuth=no ,操作系統用戶就不能登陸 CVSNT 服務器了,所以要在定義好 CVSNT 服務器的管理員之後(即修改好 passwd,admin,checkoutlist 三個文件之後),再修改它。

*** passwd 文件 ***

該文件中定義了 CVSNT 用戶的用戶名、密碼、操作系統用戶別名;
默認該文件是不存在的,只有管理員有權限創建和修改它;
該文件不能被 checkout。

格式:
cvsadmin:fqr1fS4gDghrt:administrator
用戶名:密碼:操作系統用戶別名

密碼是CVS使用UNIX標準加密函數對密碼進行加密後的結果;
這個用戶名和密碼和操作系統用戶沒有關係,修改它們不會對操作系統產生任何影響;
每個用戶必須要有一個操作系統用戶別名,這個別名必須在操作系統中真實存在,並且是管理員身份,否則該用戶無法進行 cvs 操作。(爲什麼必須是管理員?)
/*
實際上, CVSNT 服務器是以該操作系統用戶的身份進行文件的讀寫操作的,如果該操作系統用戶爲 guest ,則不能 checkout ,ls 等。
不知道爲爲什麼 CVSNT 服務器沒有把這項設置對使用者透明化,因爲每個用戶都要進行  checkout ,ls 等基本的操作,如果連這些基本的操作都不能進行的話,這個用戶就沒有存在的必要了。
按我的理解,格式就要用戶名和密碼,後面的操作系統別名默認爲管理員,就像 servu 一樣易於使用。
(也可能有其他的原因)

附:
cvsnt manual
The cvs passwd command can be used to add or delete new users. Only an administrator can do this.
Note that deleting a user does not remove them from any user permissions.
*/

*** admin 文件 ***

文件中定義了 CVSNT 服務器的管理員列表

格式:
user1
user2
...

該文件中的用戶同樣必須出現在 passwd 文件中;
該文件中的用戶,擁有 CVSNT 服務器管理員的所有權限;
該文件默認是不存在的,需要手工建立;
該文件要加入到 checkoutlist 文件中。

實際上,cvsnt server 把這個文件當作一個特殊的 group 來對待的。

*** group 文件 ***

這個文件用來定義組,我們可以將同樣性質的用戶歸入一個組,然後用給用戶賦權限的方式給組賦權限,這樣,一個組的用戶就會具有同樣的權限。

格式:
group1:user1 user2 user3
group2:user4 user5 user6
group3:user7 user8 user9
組的名稱+冒號+用戶名+空格+用戶名+空格...

多個用戶名之間用空格來進行分割;
組中的用戶,要在 passwd 文件中存在。


*** checkoutlist 文件 ***

# The "checkoutlist" file is used to support additional version controlled
# administrative files in $CVSROOT/CVSROOT, such as template files.
#
# File format:
#
# [<whitespace>]<filename><whitespace><error message><end-of-line>
#
# comment lines begin with '#'

該文件用來支持附加的版本控制操作,在 CVSROOT 中添加的文件,要在此文件中聲明.
目前只知道,admin 文件需要聲明.
格式舉例:
 admin err msg by Apollo
 
注意:不要忘記文件名稱之前的空格。

*** fileattr.xml 文件 ***

在每一個 Repository 建立之後,都會在 Repository 的 ROOT 中建立一個名字叫做 CVS 目錄,該目錄中只有一個文件 fileattr.xml;
fileattr.xml 文件中定義了訪問該 Repository 的用戶的權限;
對於新建立的 Repository ,默認是所有人擁有所有權限(CVSNT ROOT 除外);
CVSNT ROOT 的 fileattr.xml:默認是隻有管理員擁有其所有權限。


*** cvswrappers 文件 ***
refers to
http://www.mobilefish.com/developer/cvsnt/cvsnt.html

Before using CVS, it is recommended to update the cvswrappers file. The cvswrapper file contains file extensions which determines which file should be stored as binary files in the CVS Repository. To update this file do the following:

Add the following file extensions in the cvswrappers file, e.g.:

*.cab -k 'b'
*.class -k 'b'
*.doc -k 'b'
*.dll -k 'b'
*.ear -k 'b'
*.exe -k 'b'
*.exp -k 'b'
*.fla -k 'b'
*.gif -k 'b'
*.gz -k 'b'
*.jar -k 'b'
*.jpg -k 'b'
*.jpeg -k 'b'
*.lib -k 'b'
*.msi -k 'b'
*.mso -k 'b'
*.pdf -k 'b'
*.pfw -k 'b'
*.png -k 'b'
*.ppt -k 'b'
*.sit -k 'b'
*.swf -k 'b'
*.tar -k 'b'
*.tlb -k 'b'
*.vsd -k 'b'
*.xls -k 'b'
*.war -k 'b'
*.wmz -k 'b'
*.zip -k 'b'


******************
* CVSNT 配置實驗 *
******************

*** 實驗目的 ***

1.修改 CVSNT 服務器驗證方式爲 CVSNT 用戶單一驗證方式;
2.定義 CVSNT 服務器的管理員爲 cvsadmin,密碼爲 cvsadmin;
3.定義兩個 Repository(testa,testb) ,添加四個普通用戶,每個 Repository 有兩個用戶.
test1:test1 , test2:test2 爲 Repository testa 的用戶,test1,只能讀(checkout),test2 能讀、寫、添加文件(read,write,create).
test3:test3 , test4:test4 爲 Repository testb 的用戶,test3,只能讀(checkout),test4 能讀、寫、添加文件(read,write,create).

*** 完成效果 ***

cvsadmin 能設置 CVSNT 服務器的配置,並且能對所有的 Repository 擁有全部權限;
test1,test2 只能看見 testa,並且 test1 只能對 teata 進行 checkout(read),test2 能對 testa 進行 checkout,commit,add (read,write,create);
test3,test4 只能看見 testb,並且 test3 只能對 teatb 進行 checkout(read),test4 能對 testb 進行 checkout,commit,add (read,write,create);

/*
說明:
權限參數有 read,write,add,tag,control. 這裏只舉例說明最常要的 read,write,add(參見幫助文檔);
control 沒有應用成功。

*/

*** 開始配置 ***

/*
說明:
1. 以下從命令行進行配置,注意步驟地順序;
2. 設置權限等,都要把 Repository checkout 出來;
3. 對於 CVSNT 服務器的設置,實際上就是對 CVSROOT 這個特殊的 Repository 進行設置,所以首先也要把 CVSROOT checkout 出來.注意 checkout CVSROOT 需要用管理員身份;
4. 剛安裝完成之後的 CVSNT server 默認的管理員是操作系統的管理員,所以用操作系統管理員身份 checkout CVSROOT;

*/

1 *** 進入命令行,建立一個臨時目錄,用來放置 checkout 出來的 Repository ,修改完成之後,再提交到 CVSNT server 上去。

d:/ md 00   # 在 d: 建立一個臨時目錄,進入
d:/00/

2 ***  登陸  CVSNT server

d:/00/set cvsroot=:pserver:administrator:123456@localhost/cvsroot

/*
說明:
set cvsroot 是設置一個臨時的環境變量,變量值爲 = 右邊部分;
pserver     爲登陸協議,是一種明文協議,用戶名和密碼可以被監測到。本次實驗用這種協議,其他的協議以後再總結;
administrator:123456    爲本機操作系統的管理員用戶和密碼;
localhost   爲登陸的機器地址,可以用 IP;
/cvsroot    cvsroot 是安裝 CVSNT server 的時候,指定 CVSROOT 的別名。
*/

3 ***  列表
d:/00/ cvs ls
/*
說明:
列出 CVSNT server 的 CVSROOT 下面的所有 Repository;
此時應該只有一個 CVSROOT ,它是服務器的根,服務器的所有配置都在這裏;
此時登陸的身份是管理員,前文說過,CVSNT ROOT 的 fileattr.xml 已經定義,默認是隻有管理員擁有其所有權限;
列表命令成功,同時也說明登陸成功。
*/

4 *** checkout CVSNTROOT 到 d:/00/
d:/00/cvs co cvsroot
/*
說明:
co 是 commit 命令的簡寫,具體簡寫的命令,見幫助;
該命令會把  CVSNTROOT checkout 到 d:/00/ ,並且會在 d:/00/ 建立一個 cvsroot 目錄;
d:/00/cvsroot 裏面是 CVSNTROOT 中的所有配置信息;
修改配置信息之後,再 commit 上去, CVSNT server 的配置隨之改變了。
*/

5 ***  添加用戶信息

d:/00/cvs passwd -r administrator -a cvsadmin
d:/00/cvs passwd -r administrator -a test1
d:/00/cvs passwd -r administrator -a test2
d:/00/cvs passwd -r administrator -a test3
d:/00/cvs passwd -r administrator -a test4
/*
說明:
該命令會直接在 CVSNT server 的 server 端直接建立一個 passwd 文件,而不會在已經 checkout 的 d:/00/cvsroot 目錄中建立此文件;
該文件只能由管理員建立,並且不能被非管理員修改,不能被 checkout;

-r 是管理的操作系統用戶的別名
注意:
該命令不會影響操作系統用戶;
此操作系統用戶必須爲管理員。

-a 添加用戶

添加用戶的時候,會提示輸入密碼。(本次實驗,用戶名和密碼取相同)。

建立的 passwd 文件內容應如下內容:

cvsadmin:oVaaG5hcPSOQY:administrator
test1:eXetD79lHrTgw:administrator
test2:zX3nQkEmS/Se2:administrator
test3:cZgugWplhpBd.:administrator
test4:pZ5M7WTmCHMmI:administrator

The cvs passwd command can be used to add or delete new users. Only an administrator can do this.
Note that deleting a user does not remove them from any user permissions.

參考上文 passwd 文件說明。
*/

6 ***  定義 cvsadmin 爲  CVSNT server 管理員
在 d:/00/cvsroot 建立文件名爲 admin 的文件(注意,無擴展名)
內容爲 :

cvsadmin

即定義了 cvsadmin 爲 CVSNT Server 管理員;
如果還想加入其他的用戶作爲管理員,依次加入用戶名即可,每個用戶名一行;
實際上 CVSNT 把這個文件中的所有用戶,當作是管理員組。

7 ***  註冊文件 admin 到 checkoutlist 文件

打開 d:/00/cvsroot 中 checkoutlist 文件,加入這一句:

 admin err msg by jh

注意 admin 前後的空格,具體的格式信息,參照前文 checkoutlist 文件 說明部分;
只有添加的 admin 文件需要註冊到 checkoutlist 中,其他的添加文件不用。

8 ***  定義 group 組

在  d:/00/cvsroot 建立文件名爲 group 的文件(注意,無擴展名)
內容爲 :

#testall :hava all permissions
testaall:test1 cvsadmin
#testar :read only
testar:test2
#testbll :hava all permissions
testball:test3 cvsadmin
#testbr :read only
testbr:test4

testaall,testball 有完全權限;
testar,testbr     只讀權限;
該文件不用註冊到 checkoutlist。


9 ***  修改 cvswrappers 文件
參考上文。

10 ***  修改驗證方式

修改   d:/00/cvsroot 下面的 config 文件
修改前面第二行爲:
SystemAuth=no

即修改驗證方式爲 CVSNT用戶單一驗證方式。


11 ***  提交對 CVSROOT 的修改

11.1 進入  d:/00/cvsroot

11.2 d:/00/cvsroot/cvs add admin group
由於 admin 和 group 文件是新產生的,所以提交之前要添加到 commit 的計劃之中;
運行完該命令之後,會提示運行 cvs commit 命令提交該文件。

11.3 d:/00/cvsroot/cvs commit
運行該命令,會提交 d:/00/cvsroot/ 目錄中的所有文件,包括新建立的文件;
中間過程會彈出來一個提示文件,說明哪些文件被修改了,哪些文件是添加的,該文件的信息如下:

CVS: ----------------------------------------------------------------------
CVS: Enter Log.  Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS:  checkoutlist cvswrappers config
CVS: Added Files:
CVS:  admin group
CVS: ----------------------------------------------------------------------

即提示修改了 checkoutlist config cvswrappers 三個文件,添加了 admin group 兩個文件;
這個提示文件可以添加內容,所有信息都會被提交併且被 CVSNT Server 記錄;
關掉該文件,選擇繼續提交。

/*
至此,完成工作如下:
CVSNT server 已經設置爲 CVSNT用戶單一驗證方式;
CVSNT server 管理員已經設置爲 cvsadmin;
test1,test2,test3,test4 已經添加。

此時,如果再運行命令 cvs ls ,則會提示該用戶不存在。
因爲我們最開始登陸的時候,設置的是 set cvsroot=:pserver:administrator:123456@localhost/cvsroot
所以此時運行  cvs ls 是在 set cvsroot=:pserver:administrator:123456@localhost/cvsroot 環境下面進行的,而我們已經改變了驗證方式爲  CVSNT用戶單一驗證方式,administrator 用戶不在 passwd 文件中,所以 cvs ls 命令不會被執行了。

以 cvsadmin 用戶登陸:
關掉命令窗口,打開一個新的命令窗口

進入臨時目錄 d:/00/
d:/00/set cvsroot=:pserver:cvsadmin:cvsadmin@localhost/cvsroot
d:/00/cvs ls

就可以看到 CVSROOT 下面的所有 Repository 了。

測試其他的用戶爲非管理員,即看不到 CVSROOT:
關掉命令窗口,打開一個新的命令窗口
進入臨時目錄 d:/00/
d:/00/set cvsroot=:pserver:test1:test1@localhost/cvsroot
d:/00/cvs ls
會提示
Listing modules on server

空白,即不能看到 CVSROOT。

前文提到過,CVSNT ROOT 默認是隻有管理員擁有其所有權限,它是靠 fileattr.xml 文件這一句
<all deny="1" />
來實現的,具體的詳細解釋見下文。
*/

12 ***  至此,對 CVSRT Server 的 CVSROOT 的修改已經完成,爲了安全起見,刪除臨時 checkout 出來的  CVSROOT
d:/00/rd cvsroot /s
dos 命令,刪除根目錄下面的所有文件及文件夾。
/*
dos 命令
1. help  # 列出所有命令
2. help xxx  #列出 xxx 的幫助
*/

13 ***  以 test1 用戶身份 import 一個 testa 工程,做如下權限限制:
只有 cvsadmin,test1,test2 能看見 testa,;
test1 只能對 teata 進行 checkout(read);
cvsadmin,test2 能對 testa 進行 checkout,commit,add (read,write,create).

關閉窗口,建立臨時目錄 d:/00/test/,在 test 中放入幾個文件,準備 import 到 CVSNT Server 上面去。
重新以 test1 用戶登陸:
d:/00/test/set cvsroot=:pserver:test1:[email protected]/CVSNTROOT

把 d:/00/test/目錄中的所有文件 import 進入 CVSNT Server,並且命名爲 testa:
d:/00/test/cvs import -m "Imported sources test1 "  testa start

-m 爲導入時的日誌信息
cvs --help import 可以查看 import 參數

設置權限:
必須導出來纔可以定製權限;
只有 CVSNT Server 的管理員纔可以設置權限,項目的建立者(owner)也不能更改權限(是這樣嗎,麻煩!);
新建立的項目:默認是所有人擁有所有權限;
cvs lsacl :查看當前 Repository 權限。

/*

關於權限的說明:

CVSNT 2.5 對 Repository 的訪問控制設置,是使用命令 chacl,chown 來進行的;
當新建立一個 Repository 之後,會在其中建立一個 cvs 文件夾,裏面有一個 fileattr.xml 文件,該文件定義了其所在 Repository 的訪問控制權限,實際上 chacl,chown 命令就是對該文件的操作;
chacl,chown 命令,只有管理員能夠執行,就是 Repository 的創建者(owner)也不能執行!(管理員累死了!怎麼會有這種管理方法!)
執行 chacl 命令,必須先把  Repository 導出來,以下執行命令,都是導出來之後執行的。

*/

13.1 一個新的 Repository 創建之後,默認是對所有人開放所有權限的。一個新建立的 Repository 的 fileattr.xml 文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
  <directory>
    <owner>test1</owner>
  </directory>
</fileattr>


僅僅表明,該 Repository 的擁有者 owner (即創建者) 是 test1.

CVSNT 2.5 權限管理的原則是:如果不顯示的指出否定權限,則賦予肯定權限。(這一點個人覺得非常不方便,安全是第一位的。)
例如上面的 fileattr.xml 是所有人,擁有所有權限

13.2 如果要把默認的權限關閉,要用 chacl 命令
以管理員身份執行
cvs chacl -a none

執行完畢之後,應該是這個樣子:

<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
  <directory>
    <owner>test1</owner>
    <acl>
      <modified_by>cvsadmin</modified_by>
      <modified_date>2005.12.11.11.00.04</modified_date>
      <all deny="1" />
    </acl>
  </directory>
</fileattr>

modified_by,modified_date 是註釋信息;
<all deny="1" /> 一句,把默認得權限都關閉了,即使是管理員、創建者都沒有任何權限了;
並且,如果不顯示的指出肯定權限,都是默認的否定權限(和默認的權限規則相反)。

13.3 開通管理員的所有權限
cvs chacl -u testaall -a all
即,testaall 組對 testa 擁有全部權限;
-u 可以是組名稱,也可以是單個用戶名稱。

<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
  <directory>
    <acl>
      <all deny="1" />
      <modified_by>cvsadmin</modified_by>
      <modified_date>2005.12.11.11.00.04</modified_date>
    </acl>
    <owner>test1</owner>
    <acl user="testaall">
      <modified_by>cvsadmin</modified_by>
      <modified_date>2005.12.11.11.00.41</modified_date>
      <all />
    </acl>
  </directory>
</fileattr>

這樣,testaall 組中的用戶擁有所有權限了,其他的用戶無任何權限;
如果想要讓一個用戶擁有 所有權限,加入到 testaall 組即可。

13.4 添加 testar 組用戶只讀權限
cvs chacl -u testar -a read
說明:
經過 cvs chacl -a none ,如果不顯示的指出肯定權限,都是默認的否定權限(和默認的權限規則相反);
相當於 cvs chacl -u testar -a read,nowrite,nocreate,no...(所有的參數加上前綴 no).


<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
  <directory>
    <acl user="testaall">
      <all />
      <modified_by>cvsadmin</modified_by>
      <modified_date>2005.12.11.11.00.41</modified_date>
    </acl>
    <acl>
      <all deny="1" />
      <modified_by>cvsadmin</modified_by>
      <modified_date>2005.12.11.11.00.04</modified_date>
    </acl>
    <owner>test1</owner>
    <acl user="testar">
      <modified_by>cvsadmin</modified_by>
      <modified_date>2005.12.11.11.09.33</modified_date>
      <read />
    </acl>
  </directory>
</fileattr>


/*

對於 CVSNTROOT Repository 的說明

剛建立 CVSNTROOT 的時候 fileattr.xml 是這樣的(CVSNT 自動建立的)

<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
  <directory>
    <owner>administrator</owner>
    <acl user="administrator">
      <all />
    </acl>
    <acl user="admin">
      <all />
    </acl>
    <acl>
      <all deny="1" />
    </acl>
  </directory>
</fileattr>


即只有 administrator 用戶和 admin 組的用戶擁有全部權限;
而 安裝 CVSNT 的時候,是以操作系統管理員 administrator 安裝的,所以 administrator 默認給了所有權限,當更改了驗證方式之後,administrator 用戶就無效了。
admin 也是 CVSNT 自動加上的,即默認 admin組中的用戶也擁有全部權限.

實際上,我們可以直接用編輯工具按照格式更改 fileattr.xml 文件,而不用 chacl 命令,效果是一樣的。


我們可以測試:
test1,cvsadmin 用戶可以 read,write,create ...
而test2 用戶只能 read

*/


14  ***  testb 工程
同 11 testa 的過程

建立以後,我們會發現:
test1,tes2 用戶運行 cvs ls 的時候,只能看見 testa
test3,tes4 用戶運行 cvs ls 的時候,只能看見 testb
而 cvsadmin 用戶,可以看見全部的 Repository(cvsroot,testa,testb)

15   ***  完成,可以測試實驗的結果了

********
* 備註*
*******

1. 基本概念介紹
refers to
http://www.guoly.com/wincvs-guide.html

    CVS是很早的時候在Unix下發展起來的,它使用的術語比較特殊,需要先熟悉和理解,這是使用CVS的第一步。
1.1 Repository: 中文名稱:倉庫。它是 CVS服務器(可能在遠程,也可能在本地)的根目錄,我們所有的工作都保存在這個倉庫中,包括源代碼和這些代碼的全部歷史。你可以把Repository想像成一個倉庫,倉庫中有許多“木桶”,每個“木桶”就
是我們的一個讓CVS管理起來的工程。對於CVS來說,這些“木桶”之間是沒有什麼關聯的,刪除一個“木桶”不會影響別的“木桶”。我們所想像的木桶,在CVS術語中,又叫模塊(Module)。
1.2 Module:中文名稱:模塊。就是上面我們所想像的倉庫中的“木桶”,裏面放的是一個項目的所有文件(包括源代碼,文檔文件,資源文件等等)。在物理上,Module是CVS服務器根目錄下的第一級子目錄。
1.3 Import:中文名稱:導入。我們本地有一個軟件項目,裏面有許多各種類型的文件,都需要用CVS進行版本管理,那麼第一步就是把這個軟件項目的整個目錄結構都Import到CVS的倉庫中去。經過這種導入,CVS將爲你的項目創建一個新的“木桶”----Module,即模塊。
1.4 Checkout:中文名稱:導出。指將倉庫中的一個“木桶”(Module, 模塊)中的東西導出到本地的工作目錄下,然後我們可以在WinCvs的管理下,進行工作,修改其中的內容。
1.5 Commit:中文名稱:提交修改。我們在本地的工作目錄下,對工程中的文件進行修改,這些修改,需要提交給CVS的倉庫,這個過程,就叫Commit。你可以Commit一個文件,也可以Commit整個目錄。
1.6 Update:中文名稱:同步。它與Commit相對應,是從倉庫中的“木桶”(模塊)中下載你同事修改過的文件(別忘記你的項目有許多人共同參與),如果這個文件在你本地也有,就會更新本地的拷貝,如果你本地沒有,就會把新文件下載到你的本地。
1.7 Revision:中文名稱:文件版本。這是CVS中一個需要特別注意的概念,它指的是單個文件的版本,而不是整個項目的版本。基本上,單個文件每次的修改,經過Commit之後,它的Revision都要改變一次,比如從1.1到1.2到1.3等等。特別要注意,單個文件的版本(Revision)與整個工程產品的版本(Version,或者Release)可以沒有任何關係。例如,整個產品現在發行1.0版本(Version 1.0)了,但是產品的源代碼文件中,有的文件版本(Revision)可能是1.9, 有的是2.1,等等。這很容易理解,因爲爲了發行產品V1.0,我們需要對源代碼進行多次修改編譯。
1.8 Release:中文名稱:發行版本。整個產品的版本,例如VC5.0, VC6.0等。
1.9 Tag:中文名稱:標籤。在一個開發的特定期,對一個文件或者多個文件給的符號名,一般是有意義的字符串,如“stable”,“release_1_0”等。比如,我們對某個文件的1.5版本加上標籤:“memory_bug_fixed”,藉助這個有意義的標籤,我們可以理解1.5版本解決了內存Bug,所以說Tag賦予了版本一些文字含義。
上述這些基本概念,與其它的版本控制工具(例如Microsoft Source Safe)有一定的差異,建議您仔細體會。


2. cvsroot 文件介紹
舉例 :exmple
.#exmple   以 .# 開頭的文件是備份文件,不能被 checkout
exmple,v   以 ,v 結尾的文件:此文件記錄了文件的各次版本變化的歷史記錄,cvs 根據此文件,進行版本控制。
exmple     該文件記錄真正的文件內容,在進行 cvs 命令操作的時候,和 exmple,v 一起作爲 cvs 版本控制的依據。

3. cvs 命令
cvs help
# 列出所有命令
cvs --help command
# 查看某個命令的語法

命令簡寫
http://www.mobilefish.com/developer/cvsnt/cvsnt.html


*************
* refers to *
*************


http://blog.csdn.net/lonelyegg/
http://www.mobilefish.com/developer/cvsnt/cvsnt.html
http://blog.csdn.net/jdskyy/archive/2005/10/18/508567.aspx
http://www.8848software.com/scmforum/forum.asp?FORUM_ID=49&CAT_ID=9
(一個討論論壇)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章