您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > SVN
關(guān)于Subversion系統(tǒng)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/2/21 14:31:54 ] 推薦標(biāo)簽:

重新激活 Apache后,如果有人要訪問SVN服務(wù)器,系統(tǒng)會(huì)要求他輸入用戶名和密碼。 只有輸入Sally 或Harry的用戶名和相應(yīng)的密碼,才可以對檔案庫進(jìn)行修改和訪問

服務(wù)器以svnserve方式運(yùn)行
默認(rèn)下客戶可以以匿名方式通過svn://方式任意訪問檔案庫,為了限制其權(quán)限,比如只允許讀操作,可以通過修改檔案庫conf子目錄中的svnseve.conf文件來實(shí)現(xiàn)。
#vi /home/mysvn/conf/svnseve.conf
修改[general]字段下內(nèi)容為:
anon-access = read
如果設(shè)為anon-access = none,則匿名用戶不可以通過svn://方式訪問檔案庫
為了實(shí)現(xiàn)用戶認(rèn)證,我們一般采用svn+ssh://訪問機(jī)制。
首先在svnseve.conf文件設(shè)置anon-access = none禁止匿名用戶通過svn://方式訪問檔案庫,然后在其后加入
auth-access = write
auth-access 是限制有援權(quán)的使用者(使用svn+ssh:// 來登入) 的存取權(quán)限,我們設(shè)為是可以讀寫。
當(dāng)用戶通過svn+ssh://訪問時(shí),服務(wù)器會(huì)自動(dòng)激活ssh認(rèn)證機(jī)制,要求用戶輸入密碼,對于window用戶來說還需要安裝第三方軟件openssh,才可以采用這種機(jī)制
Hook scripts
掛勾 (hook) 是改動(dòng)檔案庫時(shí)所觸發(fā)的程序, 比如當(dāng)你提交更動(dòng)前,會(huì)先觸發(fā)pre-commit,提交更動(dòng)后,則會(huì)觸發(fā)post-commit,我們可以利用hook來實(shí)現(xiàn)一些自動(dòng)控制。檔案庫的hook 子目錄中, 預(yù)設(shè)是放置各個(gè)檔案庫掛勾的模板:
post-commit.tmpl         
pre-revprop-change.tmpl
post-revprop-change.tmpl 
start-commit.tmpl
pre-commit.tmpl       
如果要使用這些hook,必須把它的后綴名.tmpl去掉,拷貝為
post-commit         
pre-revprop-change
post-revprop-change 
start-commit
pre-commit
這里主要介紹pre-commit和post-commit(事實(shí)上它們是在特定的情況下被觸發(fā)的普通的shell程序,至于shell的內(nèi)容由用戶自己隨意編寫,但是要保證名稱不能改動(dòng))
pre-commit
本掛勾執(zhí)行的時(shí)間為異動(dòng)完成之后, 送交之前.檔案庫會(huì)傳遞兩個(gè)自變量給這個(gè)程序: 檔案庫的路徑, 以及準(zhǔn)備送交的異動(dòng)名稱. 如果程序傳回一個(gè)非零的結(jié)束值, 送交會(huì)被中止, 而異動(dòng)會(huì)被刪除.

如何應(yīng)用pre-commit我們不妨舉個(gè)例子:
假如有一個(gè)項(xiàng)目由Mail Team,Login Team和PHP Team三個(gè)Team共同通過SVN系統(tǒng)開發(fā)完成。當(dāng)項(xiàng)目準(zhǔn)備發(fā)布的時(shí)候,PM人員發(fā)現(xiàn)Mail功能方面存在一些 bug,需要Mail Team去修改,為了防止其它Team的人員修改系統(tǒng),我們可以在任何改動(dòng)檔案庫的企圖之前用pre-commit去檢查log message信息,(因?yàn)槿魏胃鼊?dòng)檔案庫的操作都必須提供log message信息,PM可以事先輿Mail Team約定好一個(gè)log message),如果輿pre-commit中設(shè)定的log message不相符,則不能提交更動(dòng)。
pre-commit源程序如下:
#!/bin/sh
REPOS=""
TXN=""
SVNLOOK=/usr/local/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" |
  grep –w "bug1234" > /dev/null || exit 1
exit 0
本例中的log message為”bug1234”,任何人想要提交更動(dòng)必須用 –m “bug1234”參數(shù),采用-m “bug123”,-m “bug12345”都會(huì)提交失敗。
post-commit
本掛勾執(zhí)行的時(shí)間是在異動(dòng)送交, 新修訂版被建立之后. 大多數(shù)的人用這個(gè)掛勾來寄出關(guān)于本次送交的電子郵件, 或是建立檔案庫的備份. 檔案庫會(huì)傳遞兩個(gè)自變量給這個(gè)程序: 檔案庫的路徑, 以及新建立的修訂版號. 本程序的結(jié)束碼會(huì)被忽略.

Subversion 源碼樹的 tools/hook-script 目錄中包含了一個(gè) commit-email.pl 命令,可以用來寄送包含描述指定送交的電子郵件. 這個(gè)郵件包含了更動(dòng)路徑列表, 該送交所對應(yīng)的記錄訊息, 使用者, 送交的日期,以及一個(gè)以 GNU diff 樣式表示的本次更動(dòng)差異. 我們可以將這個(gè)程序輿post-commit這個(gè)hook搭配起來使用來實(shí)現(xiàn)檔案庫更動(dòng)后自動(dòng)mail給相關(guān)人員的功能。
post-commit源程序如下:
#!/bin/sh
REPOS=""
REV=""
commit-email.pl "$REPOS" "$REV" PM@yourdomain.com
##需要指明commit-email.pl的路徑

特殊性質(zhì)

除了對你的目錄與檔案進(jìn)行版本控制之外, Subversion 還提供了一個(gè)接口, 可用來新增, 修改, 以及移除已納入版本控制的目錄與檔案的版本控制描述資料. 我們稱這個(gè)描述資料為性質(zhì),在這里我主要介紹以下幾個(gè)比較重要的特殊性質(zhì)
svn:mime-type
svn:mime-type 性質(zhì)在 Subversion 中有很多作用. 除了作為儲(chǔ)存檔案的多用途網(wǎng)際網(wǎng)絡(luò)郵件延伸語法 (MIME) 分類之外, 這個(gè)性質(zhì)的內(nèi)容還會(huì)決定幾項(xiàng) Subversion 的行為特征.
舉個(gè)例子, 如果 svn:mime-type 性質(zhì)設(shè)為文字的 MIME 類別 , Subversion 會(huì)假設(shè)該檔的內(nèi)容是二進(jìn)制(也是人類看不懂的資料). Subversion 提供的功能中, 其中一項(xiàng)是在從服務(wù)器收到工作檔的更新中, 依文字內(nèi)容與文字列進(jìn)行合并. 但是對含有二進(jìn)制資料的檔案, 根本沒有 “文字列” 的概念. 因此, Subversion 對這些檔案在更新時(shí), 不會(huì)試著進(jìn)行內(nèi)文合并. 它改用另一種方式。
一般來說Subversion 在執(zhí)行 svn import 與 svn add 子命令時(shí), 會(huì)使用二進(jìn)制偵測運(yùn)算法的方式來協(xié)助使用者.但是如果 Subversion 猜錯(cuò)了, 或是你希望將 svn:mime-type 設(shè)定成更為明確的值(可能是 image/png)你都可以移除或是手動(dòng)編輯這個(gè)性質(zhì).
svn:ignore
svn:ignore 性質(zhì)包含了檔案樣式的列表, Subversion 處理時(shí)會(huì)忽略. 它可以與執(zhí)行時(shí)期設(shè)定的 global-ignores 選項(xiàng)一起工作, 以便在類似 svn status 的命令中過濾掉未納入版本控制的目錄與檔案.
我們知道新增的文件和目錄必須透過 svn add 命令, 才會(huì)被納入 Subversion 的管理. svn status 命令會(huì)將工作復(fù)本中未納入版控制目錄與檔案顯示出來.
$ svn status calc
M     calc/button.c
?      calc/calculator
?      calc/data.c
?      calc/debug_log
?      calc/debug_log.1

在這個(gè)范例中, 用?標(biāo)注出來的文件是未納入版控制的檔案.如果你不想每次執(zhí)行 svn status 時(shí), 都看到這些檔案, 那幺svn:ignore 性質(zhì)是解決方案。你可以透過 svn propedit svn:ignore calc 對 calc 目錄加上一些忽略樣式. 舉個(gè)例子,將以下的值作為 svn:ignore 性質(zhì)的新內(nèi)容:
calculator
debug_log*
加上這個(gè)性質(zhì)后再執(zhí)行你的 svn status 輸出便會(huì)不同:
$ svn status
M     calc
M     calc/button.c
?      calc/data.c
現(xiàn)在, 所有不想看到的東西都從輸出中消失了!

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd