国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
版本庫的創(chuàng)建和配置

創(chuàng)建一個(gè) Subversion 版本庫出乎尋常的簡單。 Subversion提供的svnadmin 工具,有一個(gè)執(zhí)行這個(gè)功能的子命令。要建立一個(gè)新的版本庫,只需要運(yùn)行:

$ svnadmin create /path/to/repos

這個(gè)命令在目錄/path/to/repos創(chuàng)建了一個(gè)新的版本庫。這個(gè)新的版本庫會以修訂版本版本0開始其生命周期,里面除了最上層的根目錄(/),什么都沒有。剛開始,修訂版本0有一個(gè)修訂版本屬性svn:date,設(shè)置為版本庫創(chuàng)建的時(shí)間。

在 Subversion 1.2中,版本庫默認(rèn)使用FSFS后端存儲方式來創(chuàng)建(見“版本庫數(shù)據(jù)存儲”一節(jié))。不管怎樣,存儲類型可以使用--fs-type參數(shù)明確說明:

$ svnadmin create --fs-type fsfs /path/to/repos
$ svnadmin create --fs-type bdb /path/to/other/repos

警告

不要在網(wǎng)絡(luò)共享上創(chuàng)建Berkeley DB版本庫—它不能存在于諸如NFS, AFS或Windows SMB的遠(yuǎn)程文件系統(tǒng)中,Berkeley數(shù)據(jù)要求底層文件系統(tǒng)實(shí)現(xiàn)嚴(yán)格的POSIX鎖定語義,幾乎沒有任何網(wǎng)絡(luò)文件系統(tǒng)提供這些特性,假如你在網(wǎng)絡(luò)共享上使用BerkeleyDB,結(jié)果是不可預(yù)知的——許多錯(cuò)誤可能會立刻發(fā)現(xiàn),也有可能在幾個(gè)月之后才能發(fā)現(xiàn)

假如你需要多臺計(jì)算機(jī)來訪問,你需要在網(wǎng)絡(luò)共享上創(chuàng)建FSFS版本庫,而不是Berkeley DB的版本庫?;蛘吒玫霓k法,你建立一個(gè)真正的服務(wù)進(jìn)程(例如Apache或svnserve),把版本庫放在服務(wù)器能訪問到的本地文件系統(tǒng)中,以便能通過網(wǎng)絡(luò)訪問。詳情請參看linkend="svn.serverconfig"/>。

你可能已經(jīng)注意到了,svnadmin命令的路徑參數(shù)只是一個(gè)普通的文件系統(tǒng)路徑,而不是一個(gè)svn客戶端程序訪問版本庫時(shí)使用的URL。svnadminsvnlook都被認(rèn)為是服務(wù)器端工具—它們在版本庫所在的機(jī)器上使用,用來檢查或修改版本庫,不能通過網(wǎng)絡(luò)來執(zhí)行任務(wù)。一個(gè)Subversion的新手通常會犯的錯(cuò)誤,就是試圖將URL(甚至“本地file:路徑)傳給這兩個(gè)程序。

所以,當(dāng)你運(yùn)行svnadmin create命令后,就會在運(yùn)行目錄創(chuàng)建一個(gè)嶄新的Subversion版本庫,讓我們看一下在這個(gè)目錄創(chuàng)建中創(chuàng)建了什么。

$ ls repos
conf/ dav/ db/ format hooks/ locks/ README.txt

除了README.txtformat文件,版本庫目錄就是一些子目錄了。就像Subversion其它部分的設(shè)計(jì)一樣,模塊化是一個(gè)很重要的原則,而且層次化的組織要比雜亂無章好。下面是對新的版本庫目錄中各個(gè)項(xiàng)目的簡要介紹:

conf

一個(gè)存儲版本庫配置文件的目錄。

dav

提供給Apache和mod_dav_svn的目錄,讓它們存儲自己的數(shù)據(jù)。

db

你所有的受版本控制數(shù)據(jù)的所在之處。這個(gè)目錄或者是個(gè)Berkeley DB環(huán)境(滿是數(shù)據(jù)表和其他東西),或者是一個(gè)包含修訂版本文件的FSFS環(huán)境。

format

包含了用來表示版本庫布局版本號的整數(shù)。

hooks

一個(gè)存儲鉤子腳本模版的目錄(還有鉤子腳本本身, 如果你安裝了的話)。

locks

一個(gè)存儲Subversion版本庫鎖定數(shù)據(jù)的目錄,被用來追蹤對版本庫的訪問。

README.txt

這個(gè)文件只是用來告訴它的閱讀者,他現(xiàn)在看的是 Subversion 的版本庫。

一般來說,你不需要手動干預(yù)版本庫。svnadmin工具應(yīng)該足以用來處理對版本庫的任何修改,或者你也可以使用第三方工具(比如Berkeley DB的工具包)來調(diào)整部分版本庫。不過還是會有些例外情況,我們會在這里提到。

所謂鉤子就是與一些版本庫事件觸發(fā)的程序,例如新修訂版本的創(chuàng)建,或是未版本化屬性的修改。每個(gè)鉤子都會被告知足夠多的信息,包括那是什么事件,所操作的對象,和觸發(fā)事件的用戶名。通過鉤子的輸出或返回狀態(tài),鉤子程序能讓工作繼續(xù)、停止或是以某種方式掛起。

默認(rèn)情況下,鉤子的子目錄中包含各種版本庫鉤子模板。

$ ls repos/hooks/
post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmpl
post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl
post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl

對每種Subversion版本庫支持的鉤子的都有一個(gè)模板,通過查看這些腳本的內(nèi)容,你能看到是什么事件觸發(fā)了腳本及如何給傳腳本傳遞數(shù)據(jù)。同時(shí),這些模版也是如何使用這些腳本,結(jié)合Subversion支持的工具來完成有用任務(wù)的例子。要實(shí)際安裝一個(gè)可用的鉤子,你需要在repos/hooks目錄下安裝一些與鉤子同名(如 start-commit或者post-commit)的可執(zhí)行程序或腳本。

在Unix平臺上,這意味著要提供一個(gè)與鉤子同名的腳本或程序(可能是shell 腳本,Python程序,編譯過的c語言二進(jìn)制文件或其他東西)。當(dāng)然,腳本模板文件不僅僅是展示了一些信息—在Unix下安裝鉤子最簡單的辦法就是拷貝這些模板,并且去掉.tmpl擴(kuò)展名,然后自定義鉤子的內(nèi)容,確定腳本是可運(yùn)行的。Windows用文件的擴(kuò)展名來決定一個(gè)程序是否可運(yùn)行,所以你要使程序的基本名與鉤子同名,同時(shí),它的擴(kuò)展名是Windows系統(tǒng)所能辨認(rèn)的,例如execom和批處理的bat。

目前Subversion有已實(shí)現(xiàn)了九種鉤子:

start-commit

它在提交事務(wù)產(chǎn)生前已運(yùn)行,通常用來判定一個(gè)用戶是否有權(quán)提交。版本庫傳給該程序兩個(gè)參數(shù):到版本庫的路徑,和要進(jìn)行提交的用戶名。如果程序返回一個(gè)非零值,會在事務(wù)產(chǎn)生前停止該提交操作。如果鉤子程序要在stderr中寫入數(shù)據(jù),它將排隊(duì)送至客戶端。

pre-commit

在事務(wù)完成提交之前運(yùn)行,通常這個(gè)鉤子是用來保護(hù)因?yàn)閮?nèi)容或位置(例如,你要求所有到一個(gè)特定分支的提交必須包括一個(gè)bug追蹤的ticket號,或者是要求日志信息不為空)而不允許的提交。版本庫傳遞兩個(gè)參數(shù)到程序:版本庫的路徑和正在提交的事務(wù)名稱,如果程序返回非零值,提交會失敗,事務(wù)也會刪除。如果鉤子程序在stderr中寫入了數(shù)據(jù),也會傳遞到客戶端。

Subversion的分發(fā)版本包括了一些訪問控制腳本(在Subversion源文件目錄樹的tools/hook-scripts目錄),可以用來被pre-commit調(diào)用來實(shí)現(xiàn)精密的寫訪問控制。另一個(gè)選擇是使用Apache的httpd模塊mod_authz_svn,可以對單個(gè)目錄進(jìn)行讀寫訪問控制(見“每目錄訪問控制”一節(jié))。在未來的Subversion版本中,我們計(jì)劃直接在文件系統(tǒng)中實(shí)現(xiàn)訪問控制列表(ACLs)。

post-commit

它在事務(wù)完成后運(yùn)行,創(chuàng)建一個(gè)新的修訂版本。大多數(shù)人用這個(gè)鉤子來發(fā)送關(guān)于提交的描述性電子郵件,或者作為版本庫的備份。版本庫傳給程序兩個(gè)參數(shù):到版本庫的路徑和被創(chuàng)建的新的修訂版本號。退出程序會被忽略。

Subversion分發(fā)版本中包括mailer.pycommit-email.pl腳本(存于Subversion源代碼樹中的tools/hook-scripts/目錄中)可以用來發(fā)送描述給定提交的email(并且或只是追加到一個(gè)日志文件),這個(gè)mail包含變化的路徑清單,提交的日志信息、日期和作者以及修改文件的GNU區(qū)別樣式輸出。

Subversion提供的另一個(gè)有用的工具是hot-backup.py腳本(在Subversion源代碼樹中的tools/backup/目錄中)。這個(gè)腳本可以為Subversion版本庫進(jìn)行熱備份(Berkeley DB數(shù)據(jù)庫后端支持的一種特性),可以制作版本庫每次提交的快照作為歸檔和緊急情況的備份。

pre-revprop-change

因?yàn)镾ubversion的修訂版本屬性不是版本化的,對這類屬性的修改(例如提交日志屬性svn:log)將會永久覆蓋以前的屬性值。因?yàn)閿?shù)據(jù)在此可能丟失,所以Subversion提供了這種鉤子(及與之對應(yīng)的post-revprop-change),因此版本庫管理員可用一些外部方法記錄變化。作為對丟失未版本化屬性數(shù)據(jù)的防范,Subversion客戶端不能遠(yuǎn)程修改修訂版本屬性,除非為你的版本庫實(shí)現(xiàn)這個(gè)鉤子。

這個(gè)鉤子在對版本庫進(jìn)行這種修改時(shí)才會運(yùn)行,版本庫給鉤子傳遞四個(gè)參數(shù):到版本庫的路徑,要修改屬性的修訂版本,經(jīng)過認(rèn)證的用戶名和屬性自身的名字。

post-revprop-change

我們在前面提到過,這個(gè)鉤子與pre-revprop-change對應(yīng)。事實(shí)上,因?yàn)槎嘁傻脑?,只有存?code class="filename">pre-revprop-change時(shí)這個(gè)腳本才會執(zhí)行。當(dāng)這兩個(gè)鉤子都存在時(shí),post-revprop-change在修訂版本屬性被改變之后運(yùn)行,通常用來發(fā)送包含新屬性的email。版本庫傳遞四個(gè)參數(shù)給該鉤子:到版本庫的路徑,屬性存在的修訂版本,經(jīng)過校驗(yàn)的產(chǎn)生變化的用戶名,和屬性自身的名字。

Subversion分發(fā)版本中包含propchange-email.pl腳本(在Subversion源代碼樹中的tools/hook-scripts/目錄中),可以用來發(fā)送修訂版本屬性修改細(xì)節(jié)的email(并且或只是追加到一個(gè)日志文件)。這個(gè)email包含修訂版本和發(fā)生變化的屬性名,作出修改的用戶和新屬性值。

pre-lock

這個(gè)鉤子會在每次有人嘗試鎖定文件時(shí)執(zhí)行,可以防止完全的鎖定,或者用來制定控制哪些用戶可以鎖定特定路徑的復(fù)雜策略,如果鉤子發(fā)現(xiàn)已存在的鉤子,也可以決定是否“竊取”這個(gè)鉤子。版本庫傳遞三個(gè)參數(shù)到鉤子:到版本庫的路徑、鎖定的路徑和企圖執(zhí)行鎖定的用戶。如果程序返回非零值,鎖定動作會退出,并且所有的標(biāo)準(zhǔn)輸出返回到客戶端。

post-lock

這個(gè)鉤子在一個(gè)路徑被鎖定后執(zhí)行,鎖定的路徑傳遞給鉤子的標(biāo)準(zhǔn)輸入,這個(gè)鉤子也接受兩個(gè)參數(shù):到版本庫的路徑和企圖執(zhí)行鎖定的用戶??梢杂眠@個(gè)鉤子發(fā)送通知郵件來記錄這種鎖定事件,因?yàn)殒i定已經(jīng)發(fā)生,輸出會被鉤子忽略。

pre-unlock

這個(gè)鉤子在某人企圖刪除一個(gè)文件上的鉤子時(shí)發(fā)生,可以用來制定哪些用戶可以解除文件鎖定的策略。制定破壞鎖定的策略非常重要,如果一個(gè)用戶A鎖定了一個(gè)文件,允許用戶B打開這個(gè)鎖?如果這個(gè)鎖已經(jīng)一周了呢?這種事情可以通過鉤子決定并執(zhí)行。版本庫傳遞三個(gè)參數(shù)到鉤子:到版本庫的路徑、將要解鎖的路徑和企圖解鎖的用戶。如果程序返回非零值,解鎖操作退出并會將標(biāo)準(zhǔn)錯(cuò)誤傳輸?shù)娇蛻舳恕?

post-unlock

鉤子在一個(gè)路徑被解鎖后執(zhí)行,被解鎖的路徑會傳遞到鉤子的標(biāo)準(zhǔn)輸入,鉤子也會得到兩個(gè)參數(shù):到版本庫的路徑和刪除鎖定的用戶。可以用鉤子發(fā)送記錄這些事件的郵件。因?yàn)閯h除已經(jīng)發(fā)生,鉤子的輸出被忽略。

警告

不要嘗試用鉤子腳本修改事務(wù)。一個(gè)常見的例子就是在提交時(shí)自動設(shè)置svn:eol-stylesvn:mime-type這類屬性。這看起來是個(gè)好主意,但它會引起問題。主要的問題是客戶并不知道由鉤子腳本進(jìn)行的修改,同時(shí)沒有辦法通告客戶它的數(shù)據(jù)是過時(shí)的,這種矛盾會導(dǎo)致出人意料和不能預(yù)測的行為。

作為嘗試修改事務(wù)的替代,我們通過檢查pre-commit鉤子的事務(wù),在不滿足要求時(shí)拒絕提交。

Subversion會試圖以當(dāng)前訪問版本庫的用戶身份執(zhí)行鉤子。通常,對版本庫的訪問總是通過ApacheHTTP服務(wù)器和mod_dav_svn進(jìn)行,因此,執(zhí)行鉤子的用戶就是運(yùn)行Apache的用戶。鉤子本身需要具有操作系統(tǒng)級的訪問許可,用戶可以運(yùn)行它。另外,其它被鉤子直接或間接使用的文件或程序(包括Subversion版本庫本身)也要被同一個(gè)用戶訪問。換句話說,要注意潛在的訪問控制問題,它可能會讓你的鉤子無法按照你的目的順利執(zhí)行。

BerkeleyDB環(huán)境是對一個(gè)或多個(gè)數(shù)據(jù)庫、日志文件、區(qū)域文件和配置文件的封裝。BerkeleyDB環(huán)境對許多參數(shù)有自己的缺省值,例如任何時(shí)間里可用的數(shù)據(jù)庫鎖定數(shù)目、日志文件的最大值等。Subversion文件系統(tǒng)會使用BerkeleyDB的默認(rèn)值。 不過,有時(shí)候你的特定版本庫與它獨(dú)特的數(shù)據(jù)集合和訪問類型,可能需要不同的配置選項(xiàng)。

Sleepycat(Berkeley DB的制造廠商)的人們清楚不同的數(shù)據(jù)庫有不同的需求,所以他們提供了在運(yùn)行中覆蓋Berkeley DB環(huán)境配置參數(shù)的機(jī)制。Berkeley在每一個(gè)環(huán)境目錄中檢查是否存在一個(gè)名叫DB_CONFIG的文件,然后解析其中的參數(shù)成為Berkeley環(huán)境所用的選項(xiàng)。

你的版本庫的Berkeley配置文件位于db目錄的repos/db/DB_CONFIG, Subversion在創(chuàng)建版本庫時(shí)自己創(chuàng)建了這個(gè)文件。這個(gè)文件初始時(shí)包含了一些默認(rèn)選項(xiàng),也包含了Berkeley DB在線文檔,使你能夠了解這些選項(xiàng)是做什么的。當(dāng)然,你也可以為你的DB_CONFIG 文件添加任何Berkeley DB支持的選項(xiàng)。需要注意到,雖然Subversion不會嘗試讀取并解析這個(gè)文件,或使用其中的設(shè)置,你一定要避免會導(dǎo)致Berkeley DB按照Subversion代碼不習(xí)慣的方式工作的修改。另外,DB_CONFIG的修改在復(fù)原數(shù)據(jù)庫環(huán)境(用svnadmin recover)之前不會產(chǎn)生任何效果。


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Windows下SVN使用手冊簡明介紹(2) - 51CTO.COM
使用svnsync實(shí)現(xiàn)已有版本庫的鏡像 | zrong's Blog
TortoiseSVN的設(shè)置 上一頁 第4章日常使用指南
利用autoItlibrary庫制作文件上傳案例
win7下安裝svn服務(wù)器端及客戶端詳細(xì)步驟
SVN服務(wù)器搭建
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服