最近搭建了一下 SVN 服務(wù)器,總結(jié)了一下搭建過程,希望可以方便更多的朋友。
1、下載并安裝 windows 下 SVN 客戶端視圖軟件“烏龜 SVN”,官網(wǎng)下載地址是:http://tortoisesvn.tigris.org/。32 位 windows 的最新版本是:TortoiseSVN-1.6.7.18415-win32-svn-1.6.9.msi,大小 19 MB,作者上傳了一份到 CSDN 資源,下載連接地址:http://download.csdn.net/source/2134092。
烏龜 SVN 安裝成功后,打開我的電腦任一文件夾后單擊右鍵,會(huì)發(fā)現(xiàn)快捷菜單里有了 TortoiseSVN 相關(guān)選項(xiàng)。其實(shí)烏龜安裝不安裝無所謂,尤其是對(duì)于命令行喜好的朋友。
2、下載 SVN 最新版本安裝文件,官網(wǎng)下載地址是:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100,選擇最新發(fā)布的 SVN 安裝文件進(jìn)行下載。最新版本是 Setup-Subversion-1.6.5.msi,大小 7.4 MB,作者上傳了一份到 CSDN 資源,下載連接地址:http://download.csdn.net/source/2134114。
3、安裝 SVN 至我的電腦。最好使用中文路徑,而且路徑中不要有空格。雙擊 Setup-Subversion-1.6.5.msi -> 進(jìn)入 SVN 安裝歡迎界面,點(diǎn)擊“Next” -> 進(jìn)入版權(quán)相關(guān)聲明界面,點(diǎn)擊“Next” -> 進(jìn)入安裝目錄選擇界面,作者選擇的是 F:\tools\svn,點(diǎn)擊“Next” -> 進(jìn)入安裝確認(rèn)界面,點(diǎn)擊“Install” -> 安裝結(jié)束界面,點(diǎn)擊“Finish”結(jié)束安裝。
打開 C:\AUTOEXEC.BAT 文件進(jìn)行編輯,添加以下信息:
SET APR_ICONV_PATH="F:\tools\svn\iconv"
重啟電腦。
4、創(chuàng)建 SVN 存儲(chǔ)庫。命令行執(zhí)行以下命令:
svnadmin create F:\tools\svn\repository
這時(shí)候 svn 安裝目錄下有 repository 文件夾生成。
5、服務(wù)器相關(guān)配置。打開 F:\tools\svn\repository\conf 目錄,打開 svnserve.conf 找到以下兩行:
# [general]
# password-db = passwd
去掉每行開頭的 #,第二行是指定身份驗(yàn)證的文件名,即 passwd 文件。保存。
同樣打開同目錄下的 passwd 文件,找到以下幾行:
# [users]
# harry = harryssecret
# sally = sallyssecret
去掉每行開頭的 #(記住刪除 # 后該行前邊不可以有空格,不然會(huì)出 svn: F:\tools\svn\repository\conf\svnserve.conf:20: Option expected 錯(cuò)誤),這是設(shè)置用戶,一行一個(gè),存儲(chǔ)格式為“用戶名=密碼”,如可插入一行:admin=admin123,即為系統(tǒng)添加一個(gè)用戶名為 admin,密碼為 admin123 的用戶。保存。
6、運(yùn)行 SVN 服務(wù)。命令行執(zhí)行:
svnserve --daemon --root F:\tools\svn\repository
服務(wù)啟動(dòng)。當(dāng)然也可以建立一個(gè)批處理文件并放在 windows 啟動(dòng)組中便于開機(jī)就運(yùn)行 SVN服務(wù)。
7、創(chuàng)建批處理文件,開機(jī)運(yùn)行 SVN 服務(wù)。新建一 notepad 文件,重命名其名為“svnserver.bat”,保存在 F:\tools\svn\svnBat 目錄下,編輯其內(nèi)容如下:
@echo off
SVN 服務(wù)器已經(jīng)啟動(dòng)......
打開注冊(cè)表編輯器,找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 項(xiàng),點(diǎn)開類型為“REG_SZ”,名稱為“(默認(rèn))”的那個(gè)選項(xiàng),數(shù)值數(shù)據(jù)輸入 "F:\tools\svn\svnBat\svnserver.bat"。注意一定要帶上引號(hào),保存。
再次啟動(dòng)計(jì)算機(jī)時(shí),SVN 服務(wù)即啟動(dòng)。
8、為我們的項(xiàng)目創(chuàng)建版本樹。確定 SVN 服務(wù)(命令行或者 windows 服務(wù))運(yùn)行后,新增系統(tǒng)變量“SVN_EDITOR”,值為“C:\WINDOWS\NOTEPAD.EXE”。比如我們的項(xiàng)目名為“myprojects”,新開一 CMD 窗口,命令行執(zhí)行:
svn mkdir svn://localhost/myprojects
隨即關(guān)閉記事本打開的 log 文件窗口后按“c”鍵繼續(xù)后生成項(xiàng)目樹。
生成項(xiàng)目樹時(shí)需要用戶名和密碼,輸入 passwd 文件里給的用戶名 harry,密碼 harryssecret 即可。
創(chuàng)建其他項(xiàng)目的版本樹操作同上,只需要把“myprojects”換成我們的具體項(xiàng)目名即可。
OK,SVN 服務(wù)器安裝配置到此結(jié)束。局域網(wǎng)內(nèi)使用
svn://192.168.6.117/myprojects
即可共享項(xiàng)目資源(作者內(nèi)網(wǎng) IP 是為 192.168.6.117)。
正確的Windows下安裝配置SVN
VC 2010-04-27 10:56:07 閱讀39 評(píng)論0 字號(hào):大中小
在windows下配置svn服務(wù)器
1.下載文件
下載最新版本subversion,我這里選擇svn-1.4.5-setup.exe
下載 "Subversion Windows Service" 軟件包
下載 TortoiseSVN shell integration utility
2.安裝Subversion 服務(wù)器
由于我下載的是setup.exe版本,安裝程序安裝后會(huì)自動(dòng)設(shè)置系統(tǒng)變量.如果你下載的是zip版就需要手動(dòng)設(shè)置系統(tǒng)變量.
setup.exe版直接安裝就可以了.安裝到D:\Program Files\Subversion
首先創(chuàng)建SVN儲(chǔ)存庫(repository)
svnadmin create F:\svn\
repository創(chuàng)建完畢后會(huì)在目錄下生成若干個(gè)文件和文件夾,dav目錄是提供給Apache與mod_dav_svn使用的目錄,讓它們存儲(chǔ)內(nèi)部數(shù)據(jù);db目錄就是所有版本控制的數(shù)據(jù)文件;hooks目錄放置hook腳本文件的目錄;locks用來放置Subversion文件庫鎖定數(shù)據(jù)的目錄,用來追蹤存取文件庫的客戶端;format文件是一個(gè)文本文件,里面只放了一個(gè)整數(shù),表示當(dāng)前文件庫配置的版本號(hào);
3.配置SVN服務(wù)器
(這個(gè)位置就是在你建儲(chǔ)存庫的地方F:\svn)
打開/conf/目錄,打開svnserve.conf找到一下兩句:
# [general]
# password-db = passwd
# anon-access = none
# auth-access = write
去之每行開頭的#,其中第二行是指定身份驗(yàn)證的文件名,即passwd文件.anon-access = none 是匿名用戶不能訪問,必須要有用戶名和密碼。(注意:問題就出在這,一定要注意格式去掉注釋后要頂格不能有空)
同樣打開passwd文件,將
# [users]
# harry = harryssecret
# sally = sallyssecret
格式為“用戶名 = 密碼”,如可插入一行:admin = admin888,即為系統(tǒng)添加一個(gè)用戶名為admin,密碼為admin888的用戶
4.運(yùn)行SVN服務(wù)器
運(yùn)行SVN服務(wù)
在命令行執(zhí)行
svnserve --daemon --root F:\svn
服務(wù)啟動(dòng),--daemon可簡寫為-d,--root可簡寫為-r,可以建立一個(gè)批處理文件并放在windows啟動(dòng)組中便于開機(jī)就運(yùn)行SVN服務(wù)(注意:這是臨時(shí)打開的服務(wù),命令執(zhí)行后不能關(guān)閉窗口)
用后臺(tái)服務(wù)的方式可以設(shè)置開機(jī)自動(dòng)執(zhí)行。
D:\Program Files\Subversion\bin>sc create svnservice binpath= "d:\Program Files\
Subversion\bin\svnserve.exe --service -r F:\SVN"
就可以用net svnservice stop 或者start來啟動(dòng)服務(wù)了 也可以在Sevices.msc來啟動(dòng)了。
5、用客戶端訪問
格式:svn:\\服務(wù)器IP
因?yàn)镾VN有三種方式實(shí)現(xiàn)也就有三種不同的訪問格式。
svn 安裝備考
環(huán)境工具安裝 2010-04-26 22:59:46 閱讀55 評(píng)論0 字號(hào):大中小
今天安裝SVN,有一年多不弄這個(gè)了,手生了很多,先是讓一個(gè)同事安裝,結(jié)果安裝了半天啥也沒安裝上,沒辦法,還得親自動(dòng)手,
這一動(dòng)手不要緊,好多東西都忘記了,還請(qǐng)教了別人,不過幸而最后安裝上了,所以把幾個(gè)要點(diǎn)記下來。
一、首先是安裝的版本,目前安裝的是1.3版(服務(wù)器端,以前安裝成功過1.5版的,這次沒有安裝),先安裝svn-1.3.0-setup.exe,這個(gè)沒有什么,看你喜好安裝在任何地方,然
后安裝TortoiseSVN-1.3.2.5840-svn-1.3.0.msi,這個(gè)同樣,其實(shí)安裝后者的目的是簡化操作,不再使用大量的命令,這個(gè)后面會(huì)講。(這里假設(shè)svn-1.3.0安裝在E:\svn,而
TortoiseSVN-1.3.2安裝在默認(rèn)的C:\Program Files\ TortoiseSVN)
二、下來,安裝成功兩個(gè)軟件后,我們?cè)谥付ǖ哪夸浵聞?chuàng)建一個(gè)版本管理庫的文件夾,名字假設(shè)為myData,(如果想控制多和細(xì)一些,可以再向下新建一層目錄,如此遞推,假設(shè)
在E:\myData),然后雙擊進(jìn)入文件夾,右鍵選擇TortoiseSVN->Create Repository here,會(huì)彈出一個(gè)框,選擇Native filesystem(FSFS)(這里提一下,安裝再高版本時(shí),已不再
彈這個(gè)選擇框,直接創(chuàng)建即可)如下諸圖
圖形暫時(shí)無法上傳
創(chuàng)建成功后目錄結(jié)構(gòu)如下圖所示,不要輕易改動(dòng)這個(gè)文件夾下的內(nèi)容
三、配置,打開上面圖中的conf文件夾,修改其中的svnserve.confTech
# [general]
# password-db = passwd
改為:
[general]
password-db = passwd
這里注意:一定要把#去掉,同時(shí)這兩行要頂格到行頭,不然報(bào)“svnserve.conf header expected:2 …..”下面相同。
最終的樣子是這樣:
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = projectname(這個(gè)是你的工程名)
然后修改同目錄的passwd文件
# [users]
# harry = harryssecret
# sally = sallyssecret
改成
[users]
harry = harryssecret
lsally = sallyssecret
g#W其中左側(cè)是用戶名,右側(cè)是密碼(記住一定要頂格)
如果你還想加新的用戶名和密碼,可以在新的一行中創(chuàng)建,如:
Name = password
注意:那個(gè)authz文件,是用來配置詳細(xì)的目錄控制的,具體可以看幫助文檔,原來搞細(xì)化分枝控制時(shí)弄過一陣子,不過后來沒用。
四、啟動(dòng)服務(wù)
當(dāng)Subversion安裝成功后,它已經(jīng)加入到了path中,將我們從網(wǎng)上下載的svnservice.exe拷入到SVN安裝目錄下的BIN目錄下(此處為E:\svn\Subversion\bin),打開CMD并且定位到
安SVN的安裝目錄下,(注意是SVN而不是TortoiseSVN的目錄),
cd E:\svn\Subversion\bin
svnservice –install –d –r E:\myData
如果出現(xiàn)
svnservice install
commandline set:”-d” “-r” “E:\myData”
表示成功。這里我就走了彎路,前面同事安裝時(shí)報(bào)了失敗,總認(rèn)為出現(xiàn)這個(gè)就是錯(cuò)誤,結(jié)果其實(shí)只要不出現(xiàn)下面的失敗字樣,就是安裝成功了。還有一次安裝可以啟動(dòng)服務(wù),但起
來后就自動(dòng)關(guān)閉,說沒什么事件可做,估計(jì)是沒有建立庫并且配置svnserve.conf等幾個(gè)文件。
如果出現(xiàn):
Create svnservice failed
commandline set:”-d” “-r” “E:\myData”
表示失敗,則執(zhí)行:
svnservice –remove
再執(zhí)行svnservice –install –d –r E:\myData即可。
然后:
sc config svnservice start= auto
net start svnservice
此文件會(huì)將SVN變成windows系統(tǒng)的一個(gè)服務(wù),并默認(rèn)為自啟動(dòng),注意:執(zhí)行第三句時(shí)確保前面以命令行方式運(yùn)行的SVN服務(wù)已經(jīng)停止,如果沒停止可在其窗口中按Ctrl+C中止運(yùn)行。
后兩步也可以在控制面板的服務(wù)里將SVN服務(wù)設(shè)置成自動(dòng)并啟動(dòng)。
說明:其中在命令末尾加上E:\myData是為了告訴svn我們的資料庫都放在了什么地方,加上這個(gè)很重要,否則客戶端可能會(huì)報(bào)找不到資料庫的錯(cuò)誤。
五、導(dǎo)入版本庫。
這個(gè)是最實(shí)際的一環(huán),我們上面折騰那么半天,目的就是為這個(gè)。
好,我們用一個(gè)簡單的方法,不再使用網(wǎng)上的介紹的種種本地庫的方法,而是使用在客戶端直接導(dǎo)入的方法,簡單明了,我也是跟別人學(xué)的。
第一種情況:原始文件夾為空:
任一客戶端,安裝好客戶端軟件,(注意:是客戶端,我沒有在服務(wù)器安裝本地客戶端,雖然理論上是可以的,但我還是用的另外的機(jī)器)我們使用的是TortoiseSVN-1.4.0.7501-
win32-svn-1.4.0.msi,安裝成功后再安裝語言包,這樣在啟動(dòng)后,即可點(diǎn)擊右鍵,選擇設(shè)置,在右面的面板里語言改成中文,即可將客戶端改成中文界面。
這時(shí)我們?cè)趯?shí)際需要的路徑下新建一個(gè)文件夾(這里假設(shè)是E:\temp),然后進(jìn)入 此文件夾,選擇右鍵Import(或Export),出現(xiàn)類似下面的一個(gè)框,但URL那兒不寫圖上的寫這個(gè):
Svn://192.168.3.220/myData
點(diǎn)OK,會(huì)彈出權(quán)限驗(yàn)證的對(duì)話框,我們輸入配置的用戶名和密碼,然后點(diǎn)擊左下角的保存,再點(diǎn)擊OK,這樣,就從服務(wù)器下載了指定的版本控制數(shù)據(jù)庫,然后我們?cè)僭趖emp目錄上右鍵點(diǎn)擊Checkout,這樣,就會(huì)在temp目錄下創(chuàng)建一個(gè)隱藏的svn配置文件,(你也可以直接在外面導(dǎo)入導(dǎo)出,但會(huì)下載你的SVN服務(wù)器上的目錄,形成類似temp/myData,在myData
上有一個(gè)綠色的小對(duì)勾,這表明成功了。其實(shí)有的時(shí)候兒這個(gè)反應(yīng)較慢,你多刷幾次就出來了。)其實(shí)記得是在所建目錄下進(jìn)行導(dǎo)入就可以了,這樣比較簡單。
這時(shí),SVN服務(wù)器與客戶端的通信就完成了,你只要在客戶端里(這里指temp/myData中)新建你所需要的目錄即可,或者拷貝已有的目錄進(jìn)來,然后點(diǎn)擊右鍵,提交,選中新的文件夾和文件,即可成功提交,這時(shí)再在別的客戶端里新建目錄,直接檢出,指定Svn://192.168.3.220/myData,更新,因?yàn)樵试S了任何人read,所以會(huì)自動(dòng)下載下來。
第二種情況:直接在工作目錄下提交(即你的使用的本地目錄非空)
方法與上面略有不同,我們應(yīng)該先在你所在的目錄(E:\temp)上直接檢出,為保證可用,然后再在其目錄上直接更新(其實(shí)正常情況下可直接進(jìn)入然后執(zhí)行下面的動(dòng)作),這時(shí)我們就可以進(jìn)入目錄,將該提交的目錄添加,然后再提交。
這里有幾個(gè)問題:1、有時(shí)候兒進(jìn)去后沒有添加這個(gè)命令項(xiàng),你反復(fù)更新兩次或進(jìn)出幾次目錄就OK。
2、如果你按第一種情況直接導(dǎo)入(導(dǎo)出則沒有問題)時(shí),如果目錄非空,會(huì)報(bào)一個(gè)目錄存在的錯(cuò)誤,即說明在導(dǎo)入時(shí),會(huì)把這些本地的庫直接導(dǎo)入到你的當(dāng)前目錄下,造成無法提交和更新。這就是按照SVN幫助上講的,提交時(shí)的目錄不能和使用的目錄一樣,換句話說,必須得換路徑。
3、其實(shí)可以都使用第二種情況。但為了清楚,分開來講。
注意:一定要把上面的
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = projectname(這個(gè)是你的工程名)
放在[SASL]節(jié)前,或者直接把這個(gè)節(jié)刪除,就OK了,今天發(fā)現(xiàn)沒有處理這項(xiàng)報(bào)提交錯(cuò)誤,可恨。
這樣,整個(gè)流程就配置成功了。
MyProcessWebSharpPacer建模TortoiseSVN使用簡介
2009-04-24 來源:dev.idv.tw
·
1 安裝及下載client 端·
2 什么是SVN(Subversion)?·
3 為甚么要用SVN?·
4 怎么樣在Windows下面建立SVN Repository?·
5 建立一個(gè)Working目錄·
6 新增檔案及目錄到Repository中·
7 更新檔案及目錄·
8 更新至特定版本·
9 復(fù)制檔案及目錄·
10 制作Tag或是Release11 快速參考o
11.1 取得(Checkout)Repositoryo
11.2 更新(Update)檔案或目錄o
11.3 新增(Add)檔案或目錄o
11.4 提交(Commit)修改過的檔案或目錄o
11.5 Copy/Tag/Branch/Release檔案或目錄安裝及下載client 端
1 下載Windows 端程序:http://tortoisesvn.net/downloads。一般而言,如果是32-bit的Windows XP 應(yīng)該使用TortoiseSVN-1.4.x.xxxx-win32-svn-1.4.x.msi 這個(gè)檔案。如果是64-bit 的操作系統(tǒng),則應(yīng)該使用TortoiseSVN-1.4.x.xxxx-x64-svn-1.4.x.msi 這個(gè)檔案。
2 執(zhí)行下載回來的TortoiseSVN 安裝程序,就會(huì)進(jìn)行TortoiseSVN 的安裝。正確安裝后,應(yīng)該進(jìn)行一次的重開機(jī),以確保TortoiseSVN 的正確無誤。
3 安裝成功后,在檔案管理員內(nèi)按下鼠標(biāo)右鍵,應(yīng)該可以看到如下的畫面:
大部分的TortoiseSVN的操作都是透過檔案管理員及鼠標(biāo)右鍵就可以完成了。如果您之前使用過TortoiseCVS,應(yīng)該會(huì)對(duì)這種操作方式感到十分親切。
什么是SVN(Subversion)?
有一個(gè)簡單但不十分精確比喻:
SVN = 版本控制 + 備份服務(wù)器
簡單的說,您可以把SVN當(dāng)成您的備份服務(wù)器,更好的是,他可以幫您記住每次上傳到這個(gè)服務(wù)器的檔案內(nèi)容。并且自動(dòng)的賦予每次的變更一個(gè)版本。
通常,我們稱用來存放上傳檔案的地方就做Repository。用中文來說,有點(diǎn)像是檔案倉庫的意思。不過,通常我們還是使用Repository這個(gè)名詞?;旧希谝淮挝覀冃枰幸粋€(gè)新增(add)檔案的動(dòng)作,將想要備份的檔案放到Repository上面。日后,當(dāng)您有任何修改時(shí),都可以上傳到Repository上面,上傳已經(jīng)存在且修改過的檔案就叫做commit,也就是提交修改給SVN server的意思。針對(duì)每次的commit,SVN server都會(huì)賦予他一個(gè)新的版本。同時(shí),也會(huì)把每次上傳的時(shí)間記錄下來。日后,因?yàn)槟承┮蛩?,如果您需要從Repository下載曾經(jīng)提交的檔案。您可以直接選擇取得最新的版本,也可以取得任何一個(gè)之前的版本。如果忘記了版本,還是可以靠記憶嘗試取得某個(gè)日期的版本。
為甚么要用SVN?
4 備份工作檔案是十分重要的。您永遠(yuǎn)不知道計(jì)算機(jī)上的硬盤何時(shí)會(huì)壞掉。根據(jù)經(jīng)驗(yàn)法則再加上摩菲定理,壞事情往往都發(fā)生在最重要的時(shí)刻。例如,要release東西的前一刻,硬盤完全壞掉,無法修復(fù)。所以,常常備份工作數(shù)據(jù)是非常重要的。大部分公司的server都會(huì)有專門的備份機(jī)制,甚至是異地備援。絕對(duì)比放在自己的計(jì)算機(jī)里頭,或是隨身碟上面來的安全。
5 版本控管非常重要。您無法保證手頭上最新版本永遠(yuǎn)都是對(duì)的。很多時(shí)候,在經(jīng)過數(shù)天努力工作后,您才發(fā)現(xiàn)走錯(cuò)方向。需要將所有的修改回復(fù)到數(shù)天前版本。沒有幾個(gè)人能夠完全記住自己修改過什么東西。如果沒有做好版本控管,那么,最差的狀況就是要全部重來。
6 伙伴間的數(shù)據(jù)同步也是非常重要的。很多時(shí)候,除了您個(gè)人外,還有其它的伙伴也需要您的檔案。怎么把最新的檔案提供給伙伴呢?用e-mail?根據(jù)經(jīng)驗(yàn),用e-mail是一個(gè)很差的辦法。到了最后,根本就不知道哪一封e-mail才是新的。因?yàn)榭赡苣钚碌膃-mail已經(jīng)被當(dāng)成垃圾信給丟了。別忘了,現(xiàn)在很多e-mail軟件都有anti-spam的功能,說不定這些信件都被當(dāng)成廣告信給處理掉了。而且,您也應(yīng)該知道一般檔案如果放在e-mail內(nèi),檔案大小會(huì)變得比較大(通常是原來的4/3倍以上)。如果每天更新一次,恐怕幾天沒收信的話,信箱就爆了!
7 如果沒有一個(gè)好的辦法,備份不同版本是很耗費(fèi)硬盤空間的。例如:您有一個(gè)總共10MB的目錄,使用單純的檔案備份。如果有10個(gè)版本就會(huì)變成100MB。20個(gè)版本就有200MB。如果,不想備份這么多版本,勢(shì)必就是要減少備份的次數(shù)。拉長備份周期將會(huì)導(dǎo)致數(shù)據(jù)遺失的危險(xiǎn)性增高。把舊的不需要的備份刪除?根據(jù)經(jīng)驗(yàn),只要時(shí)間一拉長,您跟本就不知道一個(gè)月以前的版本是重要或者是不重要。
SVN能幫我們解決上面的問題嗎?答案是肯定的:
8 SVN Repository可以是自己計(jì)算機(jī)上的一個(gè)目錄,或者是隨身碟(不建議這樣用)。當(dāng)然也可以是公司的服務(wù)器。
9 SVN有很棒的版本控管機(jī)制。所有上傳的版本都會(huì)幫您記錄下來。日后您可以隨時(shí)取得某一個(gè)時(shí)刻的版本。而且,也有版本分支及合并等好用的功能。
10 SVN可以讓不同的開發(fā)者存取同樣的檔案,并且利用SVN Server作為檔案同步的機(jī)制。也就是說,您有檔案更新時(shí),無須將檔案寄給您的開發(fā)成員。只需要告訴他新的版本已經(jīng)在SVN Server上面,請(qǐng)他自己去SVN Server上面就可以取得最新版本。而且,SVN Server也可以做到當(dāng)您上傳新版本后,自動(dòng)發(fā)信給相關(guān)的成員。
11 SVN的存放檔案方式是采用差異備份的方式。也就是說,他只會(huì)備份有不同的地方。所以很省硬盤空間。此外,他也可以針對(duì)所謂的非文字文件進(jìn)行差異備份。
怎么樣在Windows下面建立SVN Repository?
假設(shè)您已經(jīng)安裝前面所提及的TortoiseSVN這套軟件,現(xiàn)在我們先告訴您如何用自己的硬盤或是隨身碟當(dāng)作SVN Repository的存放地點(diǎn)。如果您只想知道如何存取一個(gè)已經(jīng)建立好的SVN Server上面的Repository,請(qǐng)直接跳過本節(jié)。
假設(shè)您的要放置Repository的地方是E槽。您需要先建立一個(gè)空的目錄。以下面的例子而言,我們?cè)贓槽下面建立了一個(gè)名為svn_repo的目錄。SVN并沒有限定Repository目錄名稱。您可以建立任何您自己喜歡的名稱。但是,強(qiáng)烈建議勿使用非英文的檔名(如中文或日文)。
透過您的檔案管理員,在E:\svn_repo的Icon上面,按下鼠標(biāo)右鍵后,選擇TortoiseSVN->Create repository here。
接著,您會(huì)看到如下的一個(gè)窗口,這個(gè)窗口主要是問您,您希望使用的Repository數(shù)據(jù)庫格式是FSFS還是BDB。基本上,請(qǐng)選擇FSFS就可以了。按下OK按鈕后,您將可以看到下一個(gè)畫面。
這就表示您的SVN repository已經(jīng)成功的建立了。接下來就是要把您的檔案備份進(jìn)來。日后,只要需要使用這個(gè)repository,我們就可以使用file:///E:/SVN_REPO表示它。SVN就是透過這種URL的方式到如何與Repository取得聯(lián)系。各種URL的格式如下:
file:///磁盤驅(qū)動(dòng)器|/repository所在目錄/子目錄
http://賬號(hào)@服務(wù)器名稱/ repository所在目錄/子目錄
https://賬號(hào)@服務(wù)器名稱/ repository所在目錄/子目錄
svn+ssh://賬號(hào)@服務(wù)器名稱/ repository所在目錄/子目錄
其中,http表示使用一般的超文字傳輸通訊協(xié)議。https表示使用加密的超文字傳輸通訊協(xié)議。svn+ssh表示透過SSH加密通訊的管道,進(jìn)行存取。
建立一個(gè)Working目錄
所謂的Working目錄其實(shí)就是您平常用來存放工作檔案的地方。通常我們會(huì)等到自己的工作做的一個(gè)段落的時(shí)候再進(jìn)行備份。所以我們平常都是在Working目錄下面工作,等到適當(dāng)時(shí)機(jī)在commit到repository中。舉例來說,我們想在D槽下面建立一個(gè)名為working的目錄。首先先把這個(gè)目錄建立出來。
此時(shí),這個(gè)目錄應(yīng)該為空的。
在檔案管理員中按下右鍵后(您可以在working目錄的icon上按,也可進(jìn)入working目錄后,在空白的地方按),選擇SVN checkout。
接著您可以看到如下的畫面:
首先我們要填入的是repository的位置,對(duì)于SVN來說,repository的位置都是URL。由于我們前面已經(jīng)在E槽建立一個(gè)repository,因此,我們現(xiàn)在要在URL of repository這一欄填入file:///E:/svn_repo/。
接著,稍微看一下Checkout directory,這個(gè)字段應(yīng)該要指向您的working目錄。確認(rèn)后,按下OK按鈕,您應(yīng)該可以看到如下的訊息窗口。
這樣就表示動(dòng)作完成。按下OK按鈕后,再到您剛剛建立的目錄下。您將會(huì)看到working目錄下面多了一個(gè)名為.svn的目錄(這個(gè)目錄是隱藏的,如果您的檔案管理員沒有設(shè)定可以看到隱藏目錄,您將無法看到它) 。
SVN會(huì)在您的工作目錄下,以及其子目錄下建立這個(gè).svn的子目錄。您不應(yīng)該進(jìn)去這個(gè)目錄,尤其不應(yīng)該更動(dòng)這個(gè)目錄下面的任何內(nèi)容。否則會(huì)很可能會(huì)造成SVN無法正常運(yùn)作。
由于,原來的repository是空的,所以我們現(xiàn)在的working目錄也是空的。如果您現(xiàn)在checkout的是一個(gè)已經(jīng)有內(nèi)容的repository,您將會(huì)看到working目錄下面現(xiàn)在多了許多目錄及檔案。
如果您要在一個(gè)已經(jīng)存在的SVN Server上面checkout出上面的檔案,您只需要給定正確的URL以及working目錄的名稱。就可以取得指定的檔案及目錄了。
新增檔案及目錄到Repository中
假設(shè)您前面的動(dòng)作都無誤。現(xiàn)在您開始開發(fā)一個(gè)新的程序。假設(shè)您開發(fā)的程序?qū)⒎旁谇懊娼⒌膚orking目錄下面的my_ prj子目錄。如下所示:
假設(shè)您已經(jīng)編輯好檔案,準(zhǔn)備把他們放到SVN的repository中。您需要在my_prj目錄的icon上面,按鼠標(biāo)右鍵,并且選擇TortoiseSVN->Add:
接著,TortoiseSVN會(huì)把準(zhǔn)備要加入的檔案及目錄,顯示給您看。打勾的就是等下要被加入到Repository中的。如果您有某些檔案或是目錄不想在這次加入,您可以讓該項(xiàng)目不要被勾選。如此,它就不會(huì)被加入到Repository去。
按下OK后,您將會(huì)看到如下的訊息窗口:
這樣就表示成功了。有一點(diǎn)要注意的是,這個(gè)Add的動(dòng)作并未真正的將檔案放到Repository中。僅僅是告知SVN準(zhǔn)備要在Repository中放入這些檔案。此時(shí),如果您透過檔案管理員查看這些檔案,應(yīng)該會(huì)看到一個(gè)白色紅底的驚嘆號(hào)在檔案icon的下方。
這是表示您的working目錄中的檔案與Repository中的檔案還沒有同步?,F(xiàn)在我們要多一個(gè)commit的動(dòng)作。讓這些檔案真正的放入到Repository中。您可以在my_prj目錄的icon上或者是my_prj目錄內(nèi)的空白處按下鼠標(biāo)右鍵,叫出如下的選單,并且選擇SVN commit。
緊接著,您將會(huì)看到如下的窗口出現(xiàn):
在這個(gè)窗口中,下半部會(huì)列出一個(gè)清單,讓您清楚的了解到哪些檔案要被commit到repository中。同樣的,如果您有檔案不想在這個(gè)時(shí)候commit到Repository,您可以取消選取的檔案,這樣他們就不會(huì)被commit到Repository中。
在檔案列表的上方是Message欄,您可以在欄中輸入本次commit的目的。這是十分重要的字段,當(dāng)您commit的次數(shù)很多時(shí),可以靠這個(gè)訊息知道版本與版本之間的差異。當(dāng)您輸入好Message,按下OK之后,就可以看到如下的窗口出現(xiàn),通知您已經(jīng)將指定的檔案送到Repository中。
您可以到先前的folder中,確定是否所有的檔案icon都有如下的綠色勾勾在上面,這樣代表您的檔案都正確無誤的到repository中。
有時(shí)候,因?yàn)閃indows本身的問題,您可能會(huì)看到有些icon沒有變成綠色的勾勾。此時(shí),多按F5幾次,應(yīng)該就可以解決這個(gè)問題。如果,仍然不行,表示您之前的commit動(dòng)作真的有問題。請(qǐng)仔細(xì)檢查之前的commit動(dòng)作是否正確。
更新檔案及目錄
為何需要更新?由于版本控制系統(tǒng)多半都是由許多人共同使用。所以,同樣的檔案可能還有人會(huì)去進(jìn)行編輯。為了確保您工作目錄中的檔案與Repository中的檔案是同步的。建議您在編輯前都先進(jìn)行更新的動(dòng)作。在此,我們都先假設(shè)您已經(jīng)將檔案check out過一次?,F(xiàn)在要說明的是如何在一個(gè)check out過的目錄進(jìn)行update。在想要更新的檔案或目錄icon上面按下鼠標(biāo)右鍵。并且選擇SVN Update。
正常的狀況下,您可以看到如上的窗口。在這個(gè)窗口中會(huì)顯示有哪些文件更新了。如果沒有看到檔案更新的相關(guān)信息,這表示您的目錄中的檔案已經(jīng)是最新的,所以無須進(jìn)行更新。
更新至特定版本
有時(shí)我們需要回溯至特定的日期或是版本,這時(shí)就可以利用SVN的Update to revision的功能。在想要更新的檔案或目錄icon上面按下鼠標(biāo)右鍵。并且選擇TortoiseSVN->Update to revision。
在這個(gè)Update窗口中,您可以選擇更新到最新版本(HEAD)。也可以選擇更新到某個(gè)指定的版本(Revision)。當(dāng)然,您可能早就記不起來正確的版本號(hào)碼??赡苤浑[約的記得大概在什么時(shí)間。沒關(guān)系,按下Show log按鈕,您就可以回顧歷史了。
所有您曾經(jīng)做過的動(dòng)作,及其日期與對(duì)應(yīng)的版本都會(huì)列在這個(gè)窗口上面,只要在你想要的版上面點(diǎn)一下,讓他變成反白,然后按下OK。這個(gè)版本就會(huì)自動(dòng)填入U(xiǎn)pdate窗口中的Revision字段中。您只要再按下一次OK,這個(gè)版本就會(huì)被取出來到您的硬盤中。
復(fù)制檔案及目錄
很多時(shí)候您會(huì)希望有另外一個(gè)復(fù)制的目錄來進(jìn)行新的編修。等到確定這個(gè)分支的修改已經(jīng)完畢了,再合并到原來的主要開發(fā)版本上。舉例來說,我們目前在working copy下面有如下的目錄及檔案:
現(xiàn)在,我們要為trunk這個(gè)目錄建立一個(gè)branch。假設(shè)我們希望這個(gè)目錄是在D:\working\my_prj\branch\my_new_branch_for_testing。首先我們可以在trunk目錄下面的空白處,或是直接在trunk的icon下面按下鼠標(biāo)右鍵。
在選擇Branch/Tag…這個(gè)項(xiàng)目后,您將會(huì)看到如下的對(duì)話框出現(xiàn)。
請(qǐng)先確認(rèn)From WC at URL: 中的目錄是您要復(fù)制的來源目錄。接著,在To URL中輸入您要復(fù)制過去的路徑。通常我們會(huì)將所有的branch集中在一個(gè)目錄下面。以上面的例子來說,branch檔案都會(huì)集中在branch的子目錄下面。在To URL中您只需要輸入您要的目錄即可。目錄不存在時(shí),會(huì)由SVN幫您建立。特別需要注意的是SVN因?yàn)樾本€作為目錄分隔字符,而非反斜線。
接著在Log message輸入您此次branch的目的為何。按下OK就可以了。
如果成功,將可以看到下面的畫面:
按下OK就可以關(guān)閉這個(gè)窗口了。如果您此時(shí)立刻去working copy的branch子目錄下面,您將會(huì)失望的發(fā)現(xiàn)在該目錄下面并沒有剛剛指定的目錄存在。這是因?yàn)槟鷚orking copy的部份還是舊的,您只需要在branch子目錄下面進(jìn)行SVN update就可以看到這個(gè)新增的目錄了。新增的目錄就與原來的目錄無關(guān)了。您可以任意對(duì)他進(jìn)行編輯,一直到您確認(rèn)好所有在branch下面該做的工作都完成后,您可以選擇將這個(gè)branch merge回原來的trunk目錄,或者是保留它在branch中。
要merge回trunk目錄中,方法很簡單。以上面的例子來說,我們?cè)贒:\working\my_prj\trunk目錄空白處,按下鼠標(biāo)右鍵,選擇Merge:
接著可以看到如下的畫面:
這個(gè)畫面主要分為三個(gè)部份,前面的From: 與 To: 是要問您打算從Branch中的哪個(gè)版本到哪個(gè)版本,merge回原來的trunk目錄中。因此,F(xiàn)rom跟To的URL字段應(yīng)當(dāng)都是指定原來branch的目錄下。剩下的就是指定要merge的revision范圍。以上面的例子而言,我們從Branch的Revision 7開始merge到Branch下面的最新版本。您可以透過,Dry run按鈕,試作一次Merge。這個(gè)merge只會(huì)顯示一些訊息,不會(huì)真正的更新到trunk的目錄去。只有按下Merge按鈕后,才會(huì)真正的將branch的檔案與trunk的檔案合并起來。
上面的訊息告訴我們?cè)趖runk目錄下面的yyyy.cpp及xxx1.cpp已經(jīng)被更改過了。如果您在現(xiàn)在到trunk目錄下,會(huì)看到這兩個(gè)檔案處于被修改的狀態(tài)。
如果您確認(rèn)這次的merge沒有問題,您可以直接使用commit來將這兩個(gè)被修改的檔案commit回SVN repository上。如果有問題,您可以直接修改這兩個(gè)檔案,直到確認(rèn)ok了,再行commit。
一切順利的話,您就成功的將branch的檔案merge回trunk了。
制作Tag或是Release
所謂的Tag或是Release就是一個(gè)特別的版本,因?yàn)檫@個(gè)版本可能有特別的意義。例如:這個(gè)版本是特別的Milestone或是release給客戶的版本。其實(shí),Tag與Release的作法與Branch完全相同。只是Branch可能會(huì)需要merge回原來的trunk中,而tag及release大部分都不需要merge回trunk中。舉例來說,今天我們的trunk做了一版,這個(gè)版本被認(rèn)定是軟件的1.0版。1.0版對(duì)于開發(fā)來說是一個(gè)非常重要的里程碑。所以我們要特別為他做一個(gè)標(biāo)記,亦即Tag。假設(shè),這個(gè) 1.0版是要正式release給客戶或是相關(guān)vendor,我們要可以為他做一個(gè)Release的標(biāo)記?;旧?,SVN只有目錄的概念,并沒有什么Tag的用法。所以您會(huì)看到再SVN的選單上面,Branch與Tag是同一個(gè)項(xiàng)目。以這個(gè)1.0的例子來說,我們就是在Trunk上面,按下鼠標(biāo)右鍵,選擇Branch/Tag的項(xiàng)目:
成功的話,您就在Tag目錄下面建立了一個(gè)1.0的目錄。當(dāng)然,如果您這時(shí)到Tag的目錄下面去,會(huì)看不到這個(gè)目錄,您需要在Tag目錄下面update一下,才能看到它。
制作Release的作法與Tag完全相同。只是把Tag的目錄換成Release而已。
看到這里,相信大家都已經(jīng)領(lǐng)悟到無論是Branch,Tag或是Release都只是將指定的Trunk版本復(fù)制一份到另外一個(gè)目錄去。至于這個(gè)目錄要叫Branch還是叫Release,SVN根本就不管。所以,您也可取其它的目錄名稱。不過,Branch,Tag及Release已經(jīng)是SVN上面約定成俗的名稱。所以,除非您知道自己為何這樣做,否則,最好還是follow這個(gè)命名原則,以免后面新加入的人看不懂。
NOTE:同樣的道理Trunk也只是一個(gè)約定成俗的名稱。不一定要叫Trunk。只是大家看到Trunk目錄就會(huì)知道這里面放的是主要的開發(fā)主干。
快速參考
前面寫了不少廢話,主要是給完全沒有版本控制觀念的人看的。如果你想直接知道某個(gè)功能如何使用,請(qǐng)看下面的章節(jié)。
在后面的說明,皆以d:\working當(dāng)作工作目錄。您可以將他換成其它任何您想要的目錄。
取得(Checkout)Repository
12 開啟檔案管理員,進(jìn)入d:
13 在檔案管理員空白處按下鼠標(biāo)右鍵,選擇SVN Checkout
14 在Checkout對(duì)話框中,
14 URL of repository:repository的位置。
14 Checkout directory:要存放working copy的地方。
15 若d:\working目錄不存在,SVN會(huì)問您要不要建立這個(gè)目錄,請(qǐng)選擇Yes。
16 接著按下OK,即可checkout該目錄。
更新(Update)檔案或目錄
17 在您要由repository更新至working copy的檔案或是目錄的icon上面按下鼠標(biāo)右鍵。選擇SVN Update即可。
18 如果是要更新至特定的版本,則選擇TortoiseSVN->Update to revision。并且在Update對(duì)話框中的Revision字段輸入您要的版本。也可以透過Show Log按鈕來查看版本的信息。
新增(Add)檔案或目錄
19 在尚不屬于repository的檔案或目錄的icon上按下鼠標(biāo)右鍵。選擇TortoiseSVN->Add。
20 選取要新增的檔案。
21 按下OK。
NOTE:新增的檔案要經(jīng)過提交(Commit)的動(dòng)作才回真正的放入Repository中。
提交(Commit)修改過的檔案或目錄
22 在修改過的檔案,或是在整個(gè)目錄的空白處按下鼠標(biāo)右鍵。
23 勾選真正要提交至Repository的檔案或目錄。
24 輸入本次提交的紀(jì)錄訊息(Message)。這個(gè)訊息應(yīng)該要清楚明了,但不應(yīng)過份簡單。以利日后版本追蹤。
25 按下OK。
Copy/Tag/Branch/Release檔案或目錄
26 確認(rèn)您要處理的檔案或是目錄已經(jīng)是Repository中最新的版本。
27 在要處理的目錄或是檔案上面按下鼠標(biāo)右鍵,選擇TortoiseSVN->Branch/Tag。
28 在To URL處輸入您要的目的地。
28 branch:要產(chǎn)生一個(gè)分支。以區(qū)別與trunk不同的開發(fā)。
28 tag:要形成一個(gè)標(biāo)記,表示重要的milestone。
28 release:表示一個(gè)已經(jīng)正式的release的紀(jì)錄。
28 其它:進(jìn)行一個(gè)復(fù)制(copy)。
|
聯(lián)系我們|
招聘信息|
火龍果軟件|
火龍果軟件/UML軟件工程組織致力于提高您的軟件工程實(shí)踐能力,我們不斷地吸取業(yè)界的寶貴經(jīng)驗(yàn),向您提供經(jīng)過數(shù)百家企業(yè)驗(yàn)證的有效的工程技術(shù)實(shí)踐經(jīng)驗(yàn),同時(shí)關(guān)注最新的理論進(jìn)展,幫助您“領(lǐng)跑您所在行業(yè)的軟件世界”。
窗體頂端
常用鏈接
·
我的隨筆·
我的評(píng)論·
我的參與·
最新評(píng)論留言簿(2)
·
給我留言·
查看公開留言·
查看私人留言隨筆分類
·
CM(rss)·
CRM(rss)·
EAM(1)(rss)·
JMS(2)(rss)·
portal(rss)·
交通行業(yè)(rss)·
代碼天地(3)(rss)·
工作流(rss)·
電子政務(wù)(rss)·
自來水行業(yè)(rss)·
項(xiàng)目管理(4)(rss)隨筆檔案
·
2008年2月 (3)·
2007年5月 (5)·
2007年3月 (2)·
2007年2月 (2)文章分類
·
JMS(rss)·
業(yè)務(wù)模型(2)(rss)·
數(shù)據(jù)庫(1)(rss)·
電子政務(wù)(1)(rss)·
項(xiàng)目管理(1)(rss)文章檔案
·
2008年10月 (1)·
2008年2月 (1)·
2007年5月 (2)·
2007年3月 (1)·
2007年2月 (1)收藏夾
·
業(yè)務(wù)模型(rss)·
數(shù)據(jù)庫設(shè)計(jì)(rss)搜索
·
最新評(píng)論
·
1. Sozdanie I Prodvijenie Saitov· 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
· --Sozdanie I Prodvijenie Saitov
·
2. re: 瑞星有點(diǎn)過火了· 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
· --王子6號(hào)
·
3. re: ECSIDE2.0beta版本中關(guān)STRUTS提交中正在提交解決暫時(shí)解決辦法!· 樓上的 可以試一下把 useAjax ="false"
· --倚樓
·
4. re: ECSIDE2.0beta版本中關(guān)STRUTS提交中正在提交解決暫時(shí)解決辦法!· webwork+ecside 3.0版點(diǎn)分頁或刷新 出現(xiàn)"正在提交"不知道這個(gè)問題有沒有解決 正在關(guān)注...
· --zhanghui
·
5. re: 瑞星有點(diǎn)過火了· @王子6號(hào)
是啊,盜版讓中國人都用的起軟件了,帶來了好處,也帶來了壞處,對(duì)軟件行業(yè)是極大的打擊。
· --dreamstone
閱讀排行榜
·
1. subversion+apache 配置(5099)·
2. TOMCAT ECLIPSE JVM參數(shù)設(shè)置(2790)·
3. jms編程(ibm)(2562)·
4. activemq的學(xué)習(xí)之路(1619)·
5. 正泰EAM產(chǎn)品白皮書(1402)評(píng)論排行榜
·
1. 瑞星有點(diǎn)過火了(5)·
2. ECSIDE2.0beta版本中關(guān)STRUTS提交中正在提交解決暫時(shí)解決辦法!(2)·
3. ECSIDE 值得期待表格插件(0)·
4. activemq的學(xué)習(xí)之路(0)·
5. jms編程(ibm)(0)subversion+apache 配置注意:目前windows下的subversion只能跟Apache2.0.x配合,不能用于Apache2.2.x,除非你自己編譯
在所有的Subversion服務(wù)器配置方式中,基于Apache的是最靈活的。雖然配置起來有一點(diǎn)點(diǎn)復(fù)雜,但是它提供了其它方式所沒有的好處:
WebDAV
基于Apache配置的Subversion服務(wù)器使用了被許多其它程序支持的WebDAV協(xié)議。舉個(gè)例子,你可以在Windows的資源管理器中將這樣的一個(gè)版本
庫掛載成一個(gè)“Webfolder”,然后像文件系統(tǒng)中的其它文件夾一樣訪問它。
瀏覽版本庫
你可以在不安裝Subversion客戶端的情況下,使用瀏覽器來瀏覽版本庫中的內(nèi)容。這將使得更大范圍的用戶可以訪問你的數(shù)據(jù)。
用戶驗(yàn)證
你可以使用任何Apache支持的驗(yàn)證機(jī)制,包括SSPI和LDAP。
安全
Apache是非常的穩(wěn)定和安全,因此你的版本庫自然而然地?fù)碛型瑯拥陌踩?。包括SSL加密。
2. 安裝過程
2.1. 安裝Apache
安裝Apache前,你要有一臺(tái)運(yùn)行Windows2000、Windows XP + sp1或Windows2003的電腦。
警告:請(qǐng)注意,沒安裝Service Pack 1的Windows XP將導(dǎo)致錯(cuò)誤的網(wǎng)絡(luò)數(shù)據(jù)從而破壞你的版本庫!
從
http://httpd.apache.org/download.cgi 下載最新版本的Apache Web服務(wù)器。確保你下載的版本大于2.0.54。2.0.54版本的Apache將不能與
Subversion 1.3.xx配合工作。而且,小于2.0.54的Apache也因?yàn)樵趙indows上的編譯存在一個(gè)bug而導(dǎo)致不能與subversion1.2配合使用。
一旦你已經(jīng)有了Apache2的安裝程序,你可以雙擊它,它將引導(dǎo)你完成整個(gè)安裝過程。請(qǐng)確保你輸入正確的服務(wù)器URL(如果你的服務(wù)器沒有DNS
名稱,你可以直接輸入IP地址)。我建議你將Apache安裝成 for all Users,on Port 80,as a service。注意:如果你已經(jīng)有一個(gè)IIS或者其它
的程序使用80端口,安裝可能會(huì)失敗。如果是這樣,你可以到程序目錄下的Apache Group\Apache2\conf目錄中找到文件httpd.conf,將其中的
Listen 80改成一個(gè)不用的端口,比如Listen 81。然后重新運(yùn)行這個(gè)安裝程序,這次應(yīng)該不會(huì)再有問題了。
現(xiàn)在你可以在你的瀏覽器中鍵入
http://loccalhost/,如果呈現(xiàn)了一個(gè)已經(jīng)配置好的網(wǎng)站,那么你的Apache就安裝成功了。
警告:
如果你將Apache安裝成一個(gè)服務(wù),它將以本地system帳戶來運(yùn)行。為Apache創(chuàng)建一個(gè)單獨(dú)的用戶來運(yùn)行它將會(huì)更安全一些。
請(qǐng)確保運(yùn)行Apache的用戶有版本庫的完全訪問權(quán)限(右鍵版本庫目錄->屬性->安全)。要不然,用戶將無法提交他們的更改。
就算Apache以本機(jī)system來運(yùn)行,你也要設(shè)置它能完全讀寫版本庫目錄。
如果沒有為Apache配置這個(gè)許可,用戶將會(huì)得到"禁止訪問"的錯(cuò)誤信息,在Apache的錯(cuò)誤日志中表現(xiàn)為錯(cuò)誤500。
2.2. 安裝Subversion
從
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 (英文)
或
http://www.iusesvn.com/bbs/forumdisplay.php?fid=7(中文)下載最新版本的Subversion。
運(yùn)行Subversion安裝程序,如果安裝程序能夠識(shí)別你已經(jīng)安裝了Apache,那么你的安裝基本上就OK了。如果它不能,那么你要做一些額外的步
驟。
注:如果你先安裝Apache,再安裝Subversion,正常情況下下面的工作(2.3配置前)Subversion安裝程序已經(jīng)幫你完成了
使用資源管理器,進(jìn)入Sibversion的安裝目錄(通常為c:\program files\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so
,將它們拷貝到Apache的modules目錄(通常為c:\program files\apache group\apache2\modules)。
從Subversion的安裝目錄拷貝文件libdb43.dll到Apache的modules目錄。
使用如記事本之類的文本編輯器編輯Apache的配置文件(通常為c:\program files\apache group\apache2\conf\httd.conf),修改以下內(nèi)容:
去掉以下行的注釋(將開頭的#刪除):
CODE:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
在LoadModule節(jié)的最后添加以下兩行:
CODE:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
2.3. 配置
現(xiàn)在,你已經(jīng)安裝了Apache和Subversion,但是Apache還不知道如果處理像TortoiseSVN一樣的Subversion客戶端。要讓Apache知道哪個(gè)URL將
被Subversion使用,你要像下面這樣編輯Apache的配置文件(通常在c:\program files\apache group\apache2\conf\httpd.conf):
在配置文件的最后添加下面這些行:
CODE:
<Location /svn>
DAV svn
SVNParentPath D:\SVN
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:\passwd
#AuthzSVNAccessFile D:\svnaccessfile
Require valid-user
</Location>
這樣配置表示:你所有的版本庫將位于D:\SVN目錄下,要訪問你的版本庫可以使用這樣的URL:
http://MyServer/svn/,訪問權(quán)限將由passwd文
件中的用戶名/密碼來限制。
要?jiǎng)?chuàng)建passwd文件,可以打開命令行(DOS窗口),將當(dāng)前目錄切換到apache2目錄(通常為c:\program files\apache group\apache2),然后打
入以下命令以創(chuàng)建文件:
CODE:
bin\htpasswd -c passwd <username>
重啟Apache服務(wù)。
將你的瀏覽器指向
http://MyServer/svn/MyNewRepository(MyNewRepository是你之前創(chuàng)建的Subversion版本庫)。如果一切正常,你將被提示
輸入用戶名密碼,輸入正確的用戶名密碼后你就可以看到版本庫中的內(nèi)容了。
對(duì)你剛剛輸入的apache配置作一些簡短的說明:
QUOTE:
<Location /svn>
意味著可以通過像這樣的URL(
http://MyServer/svn)來訪問Subversion版本庫
DAV svn
告訴Apache哪個(gè)模塊負(fù)責(zé)服務(wù)像那樣的URL--在這里就是Subversion模塊
SVNListParentPath on
在Subversion 1.3及更高版本中,這個(gè)指示器使得Subversion列出由SVNParentPath指定的目錄下所有的版本庫
SVNParentPath D:\SVN
告訴Subversion在目錄D:\SVN下尋找版本庫
AuthType Basic
啟用基本的驗(yàn)證,比如用戶名/密碼對(duì)
AuthName "Subversion repositories"
當(dāng)一個(gè)驗(yàn)證對(duì)話框彈出時(shí),告訴用戶這個(gè)驗(yàn)證是用來做什么的
AuthUserFile D:\passwd
指定D:\passwd用為密碼文件用來驗(yàn)證用戶的用戶名及密碼
AuthzSVNAccessFile D:\svnaccessfile
指定D:\svnaccessfile來限定各個(gè)用戶或組在版本庫中目錄的訪問權(quán)限
Require valid-user
限定用戶只有輸入正確的用戶名及密碼后才能訪問這個(gè)路徑
----------------------------------------
上面的配置僅僅是一個(gè)簡單的示例。你還可以對(duì)Apache進(jìn)行許許多多的配置。
1如果你想讓所有用戶對(duì)版本庫都有讀的權(quán)限而只有特定的用戶才有寫的權(quán)限,你可以將這行
CODE:
Require valid-user
改為
CODE:
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
2上面的配置使用了passwd文件將你所有的版本庫作為一個(gè)單元來限定訪問權(quán)限。如果你想獲得更多的控制,如限定某個(gè)用戶可以訪問版本庫中
的哪個(gè)目錄,可以把下面這行的#去掉:
CODE:
#AuthzSVNAccessFile D:\svnaccessfile
然后用文本編輯器創(chuàng)建一個(gè)Subversion授權(quán)文件。Apache將確保只有有效的用戶可以訪問你的/svn位置,然后將用戶名傳到
AuthzSVNAccessFile模塊,這樣可以依據(jù)Subversion授權(quán)文件得到更精細(xì)的權(quán)限控制。注意,路徑將被指定為[庫:路徑]或者簡單的[路徑]。如
果你不明確指定一個(gè)庫,訪問規(guī)則將應(yīng)用到由SVNParentPath指定的目錄下所有的版本庫中。一個(gè)授權(quán)文件例子可能像這樣:
CODE:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# 為所有庫指定默認(rèn)訪問規(guī)則
# 所有人可以讀,管理員可以寫,危險(xiǎn)分子沒有任何權(quán)限
[/]
* = r
@admin = rw
dangerman =
# 允許開發(fā)人員可以完全訪問他們的項(xiàng)目版本庫
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# 文檔編寫人員對(duì)所有的docs目錄有寫權(quán)限
[/trunk/doc]
@docs = rw
# 培訓(xùn)人員可以完全訪問培訓(xùn)版本庫
[TrainingRepos:/]
@training = rw
2.4. 使用SSL來保護(hù)你的服務(wù)器
因?yàn)槊绹隹谙拗?,默認(rèn)安裝的Apache服務(wù)器不支持SSL。但是你自己可以很容易地在其它地方下載到所需要的模塊,然后安裝它。
首先你需要SSL的必需文件。你可以
http://hunter.campbus.com/ 或這里找到相應(yīng)的軟件包(或者下載本主題的附件1:
附件: mod_ssl_etc.rar (2006-10-16 15:30, 595.45 K)
該附件被下載次數(shù) 110
)。然后只要將包解開將其中的mod_ssl.so拷到Apache的modules目錄、openssl.exe、libeay32.dll、ssleay32.dll拷到bin目錄、
conf/ssl.conf拷到conf目錄。
在Apache的conf目錄中用文本編輯器打開ssl.conf。
將下面這些行用#注釋掉:
CODE:
DocumentRoot "c:/apache/htdocs"
ServerName
www.example.com:443ServerAdmin
you@example.comErrorLog logs/error_log
TransferLog logs/access_log
修改
CODE:
SSLCertificateFile conf/ssl.crt/server.crt
為
CODE:
SSLCertificateFile conf/ssl/my-server.cert
修改
CODE:
SSLCertificateKeyFile conf/ssl.key/server.key
為
CODE:
SSLCertificateKeyFile conf/ssl/my-server.key
修改
CODE:
SSLMutex file:logs/ssl_mutex
為
CODE:
SSLMutex default
刪除以下兩行(如果有,我認(rèn)為有錯(cuò),刪掉之后apache無法啟動(dòng)):
CODE:
<IfDefine SSL>
</IfDefine>
打開Apache配置文件(httpd.conf),去掉這行的注釋
CODE:
#LoadModule ssl_module modules/mod_ssl.so
Openssl需要一個(gè)配置文件。你可以從這里下載一個(gè)可工作的版本
http://tud.at/programm/openssl.cnf (或者本主題附件2:
附件: openssl.cnf.rar (2006-9-10 19:11, 1.21 K)
該附件被下載次數(shù) 84
)。將它保存到bin/openssl.cnf。
下面你要?jiǎng)?chuàng)建一個(gè)SSL證書。你可以打開一個(gè)命令行窗口,然后cd到Apache安裝目錄(比如C:\program files\apache group\apache2),敲入
以下命令:
CODE:
bin\openssl req -config bin\openssl.cnf -new -out my-server.csr
你將被問及一句口令短語。請(qǐng)注意,不要使用簡單的幾個(gè)詞,而應(yīng)該輸入一整個(gè)句子,比如一篇詩詞的一部份,越長越好。同樣,你還要輸入
你的服務(wù)器URL。然后其它的問題都是可選問答的,不過我建議你也將它們填充。
下一步,敲入以下命令:
CODE:
bin\openssl rsa -in privkey.pem -out my-server.key
以及(注意,只有一行)
CODE:
bin\openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000
這樣將創(chuàng)建一個(gè)4000天后才過期的證書。最后敲入:
CODE:
bin\openssl x509 -in my-server.cert -out my-server.der.crt -outform DER
這些命令在Apache目錄下創(chuàng)建了一些文件(my-server.der.crt, my-server.csr, my-server.key, .rnd, privkey.pem, my-server.cert)。
將這些文件拷貝到目錄conf/ssl
(比如C:\program files\apache group\apache2\conf\ssl),如果目錄ssl不存在,你必須先創(chuàng)建一個(gè)。
重啟Apache服務(wù)。
現(xiàn)在可以用類似這樣的url來訪問你的版本庫了
https://servername/svn/projectQUOTE:
強(qiáng)制通過SSL來訪問
當(dāng)你配置了SSL來提高版本庫安全時(shí),你可能想禁用無SSL的http訪問方式,而只允許通過https訪問。要達(dá)到這種效果,你要在<Location>塊加
入另外一個(gè)指示器SSLRequireSSL。
一個(gè)示例<Location>塊可能像這樣:
<Location /svn>
DAV svn
SVNParentPath D:\SVN
SSLRequireSSL
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
以上介紹的配置為Apache多庫方式,即一個(gè)location可以同時(shí)為多個(gè)版本庫服務(wù),
假設(shè)你的ip為192.168.0.1,在D:\SVN目錄下建了兩個(gè)版本庫,proj1和proj2
可以分別用下面兩個(gè)url來訪問你的版本庫
CODE:
http://192.168.0.1/svn/proj1CODE:
http://192.168.0.1/svn/proj1還有一種配置方式為Apache單庫方式,即一個(gè)location只能為一個(gè)版本庫服務(wù),
配置時(shí)只要將上面的SVNParentPath改為SVNPath,同時(shí)將后面的路徑由版本庫的父目錄改為版本庫的目錄
如:
CODE:
<Location /svn>
SVNPath D:\SVN\proj1
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:\passwd
#AuthzSVNAccessFile D:\svnaccessfile
Require valid-user
</Location>
posted on 2007-02-26 11:49
李志峰 閱讀(5099)
評(píng)論(0) 編輯 收藏 所屬分類:
項(xiàng)目管理新用戶注冊(cè) 刷新評(píng)論列表Powered by:
BlogJavaCopyright ? 李志峰
窗體底端
Subversion1.6.6 + apache2.2.14 + windows安裝配置1、下載Apache2.2.14并安裝,略。設(shè)安裝目錄為:D:\Program Files\Apache Software Foundation\Apache2.2
2、下載Subversion1.6.6并安裝,略。設(shè)安裝目錄為:D:\install\svn-win32-1.6.6
3、假設(shè)已安裝完成上述軟件,整合配置步驟如下:
· 復(fù)制D:\install\svn-win32-1.6.6\bin目錄下的mod_dav_svn.so,mod_authz_svn.so及 所有dll文件(共17個(gè)文件)到D:\Program Files\Apache Software Foundation\Apache2.2\modules目錄下。
· D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf配置文件,找到#LoadModule dav_module modules/mod_dav.so和#LoadModule dav_fs_module modules/mod_dav_fs.so,取消前面的2個(gè)“#”。并在LoadModule dav_fs_module modules/mod_dav_fs.so的下一行增加:LoadModule dav_svn_module modules/mod_dav_svn.so和
LoadModule authz_svn_module modules/mod_authz_svn.so,一個(gè)語句一行,最后的形式為:
C代碼
1 LoadModule dav_module modules/mod_dav.so
1 LoadModule dav_fs_module modules/mod_dav_fs.so
1 LoadModule dav_svn_module modules/mod_dav_svn.so
1 LoadModule authz_svn_module modules/mod_authz_svn.so
· 使用Apache自帶的htpasswd工具,生成密碼文件(需要建立D:\Program Files\Apache Software Foundation\Apache2.2\conf-svn目錄)。命令如下:
C代碼
1 D:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd -cmb ../conf-svn/passwd test test
·
· 打開配置文件D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf,在文件最后增加:
C代碼
1 #資源庫的根位置,多庫模式。實(shí)際的資源庫路徑為:D:\svnrepos\testrepo
1 <Location /svn>
1 DAV svn
1 SVNParentPath D:\svnrepos #AuthzSVNAccessFile svnaccessfile
1 AuthType Basic
1 AuthName "Subversion repositories"
1 AuthUserFile "D:\Program Files\Apache Software Foundation\Apache2.2\conf-svn\passwd"
1 Require valid-user
1 </Location>
1
1 #單庫模式配置方法,根據(jù)實(shí)際需要選擇一種配置方法就行。
1 <Location /svn>
1 DAV svn
1 SVNPath D:\svnrep\test
1 AuthType Basic
1 AuthName "Subversion repositories"
1 AuthUserFile "D:\Program Files\Apache Software Foundation\Apache2.2\conf-svn\passwd"
1 Require valid-user
1 </Location>
·
· 保存httpd.conf文件,重啟Apache,就能訪問了。注:多庫模式下的訪問地址:http://localhost/svn /test;單庫模式的訪問地址:http://localhost/svn,第一次訪問時(shí)提示輸入用戶名密碼。使用htpasswd命令中設(shè)置的用戶名 密碼訪問。
二.安裝配置
首先安裝apache,安裝過程中會(huì)提示填寫ServerName等,有的話就填,沒有的話就寫上IP,我填的是localhost.
安裝完apache,如果沒有出錯(cuò)的話ApacheMonitor會(huì)出現(xiàn)在系統(tǒng)任務(wù)欄,并顯示已運(yùn)行狀態(tài).
安裝svn-1.4.0,安裝過程中svn會(huì)檢測(cè)到系統(tǒng)中已經(jīng)運(yùn)行apache,apache會(huì)在期間自動(dòng)重新啟動(dòng),
ApacheMonitor的狀態(tài)欄也會(huì)自動(dòng)改為"Apache/2.0.55(Win32) SVN/1.4.0 DAV/2",說明svn安裝成功.
如果apache和svn沒有自動(dòng)集成成功,也可以手動(dòng)修改apache httpd.conf文件如下3步:
1.找到以下兩行:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
改為:
LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so(網(wǎng)上很多說法是把這一行也去掉#注釋,但好像并非必須去掉.)
2.添加以下兩行:
LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
# "C:/Program Files/Subversion"是Subversion的安裝目錄
3.在httpd.conf的最后添加如下內(nèi)容:
<Location /svn>
DAV svn
SVNParentPath "E:/svndemo"
# SVNParentPath指向svn資源庫的上一級(jí)目錄
# SVNPath "E:/svndemo/repository"
# SVNPath指向svn資源庫目錄
# 使用SVNParentPath或SVNPath根據(jù)相應(yīng)需求
# 關(guān)于如何創(chuàng)建svn資源庫目錄在本文最后有補(bǔ)充
</Location>
現(xiàn)在已經(jīng)可以通過http://localhost:8080/svn/repository/來訪問資源庫了.
三.使用apache身份驗(yàn)證
使用apache身份驗(yàn)證就要使用apache的htpasswd.exe命令生成密碼文件,示例如下:
命令行下執(zhí)行:htpasswd –c E:\svndemo\svn_auth_passwd plmm
參數(shù)-c創(chuàng)建密碼文件svn_auth_passwd并添加用戶plmm,然后會(huì)提示輸入密碼.
繼續(xù)添加用戶:htpasswd -m E:\svndemo\svn_auth_passwd klmm
參數(shù)-m在已有的密碼文件中添加新用戶klmm,并用MD5加密密碼.
這樣就創(chuàng)建了一個(gè)密碼文件添加了兩個(gè)用戶.
修改apache httpd.conf文件,添加如下內(nèi)容:
<Location /svn>
DAV svn
SVNParentPath "E:/svndemo"
AuthType Basic
AuthName "Subversion repository"
Require valid-user
AuthUserFile "E:/svndemo/svn_auth_passwd"
# AuthUserFile指向密碼文件
</Location>
現(xiàn)在通過http://localhost:8080/svn/repository/訪問資源庫需要輸入用戶名密碼.
四.結(jié)合mysql實(shí)現(xiàn)身份驗(yàn)證
1.解壓上面下載的mod_auth_mysql-2.0.49-w32.zip文件,拷貝mod_auth_mysql.so文件至apache下modules目錄.
2.修改apache httpd.conf文件,添加如下內(nèi)容:
使apache加載mysql身份驗(yàn)證模塊:
LoadModule mysql_auth_module modules/mod_auth_mysql.so
配置apache用來驗(yàn)證用戶名密碼的數(shù)據(jù)庫表:
<Location /svn>
DAV svn
SVNParentPath "E:/svndemo"
AuthType Basic
AuthName "Subversion repository"
#AuthUserFile "E:/svndemo/svn_auth_passwd"
Require valid-user
AuthMySQLHost localhost
AuthMySQLUser root
# AuthMySQLUser 數(shù)據(jù)庫登陸用戶名
# AuthMySQLPassword 1234
AuthMySQLDB svn
# AuthMySQLDB 數(shù)據(jù)庫名
AuthMySQLUserTable users
# AuthMySQLUserTable 數(shù)據(jù)庫表名
AuthMySQLNameField user_name
# AuthMySQLNameField 用戶名字段
AuthMySQLPasswordField user_passwd
# AuthMySQLPasswordField 密碼字段
# AuthMySQLMD5Passwords On
AuthMySQLCryptedPasswords Off
</Location>
3.重啟apache,現(xiàn)在通過http://localhost:8080/svn/repository/訪問資源庫需要輸入mysql表中的用戶名密碼.
五.相關(guān)命令
安裝apache服務(wù):apache -k install
卸載apache服務(wù):apache -k uninstall
啟動(dòng)apache服務(wù):apache -k start或net start Apache2
停止apache服務(wù):apache -k stop 或net stop Apache2
svn創(chuàng)建資源庫:svnadmin create E:\svndemo\repository
啟動(dòng)資源庫服務(wù):svnserve -d -r E:\svndemo\repository
拷貝my.ini到c:\winnt
安裝MySQL服務(wù):mysqld-nt -install
啟動(dòng)MySQL服務(wù):net start mysql
停止MySQL服務(wù):net stop mysql
卸載MySQL服務(wù):mysqld-nt -remove
1.為什么要用VisualSVN Server,而不用Subversion?
回答:
因?yàn)槿绻苯邮褂肧ubversion,那么在Windows 系統(tǒng)上,要想讓它隨系統(tǒng)啟動(dòng),就要封裝SVN Server為windws service,還要通過修改配置文件來控制用戶權(quán)限,另外如果要想以Web方式【http協(xié)議】訪問,一般還要安裝配置Apache,如果是新手,豈不是很頭痛?而VisualSVN Serve集成了Subversion和Apache,省去了以上所有的麻煩。安裝的時(shí)候SVN Server已經(jīng)封裝為windws service,Apache服務(wù)器的配置也只是在圖像界面上,指定認(rèn)證方式、訪問端口等簡單操作;另外,用戶權(quán)限的管理也是通過圖像界面來配置。
2.為什么不用TFS?
回答:
因?yàn)槲覀円婚_始就是用Subversion和TortioseSVN,所以就沒有更換其他的軟件。至于TFS至今沒有用過,其實(shí),我只是看了一些的文章而已,對(duì)它也不了解。
3.VisualSVN Server是免費(fèi)的嗎?
回答:
是的,VisualSVN Server是免費(fèi)的,而VisualSVN是收費(fèi)的。VisualSVN是SVN的客戶端,和Visual Studio集成在一起, VisualSvn Server是SVN的服務(wù)器端,包括Subversion、Apache和用戶及權(quán)限管理,優(yōu)點(diǎn)在上面已經(jīng)說過了。
好了,言歸正傳,正式開始我們今天的教程。
一、VisualSVN Server的配置和使用方法【服務(wù)器端】
安裝好VisualSVN Server后【安裝過程看】,運(yùn)行VisualSVN Server Manger,下面是啟動(dòng)界面:
好的,下面我來添加一個(gè)代碼庫【Repository】,如下圖:
按上圖所示,創(chuàng)建新的代碼庫,在下圖所示的文本框中輸入代碼庫名稱:
注意:上圖中的CheckBox如果選中,則在代碼庫StartKit下面會(huì)創(chuàng)建trunk、branches、tags三個(gè)子目錄;不選中,則只創(chuàng)建空的代碼庫StartKit。
點(diǎn)擊OK按鈕,代碼庫就創(chuàng)建成功了。
創(chuàng)建完代碼庫后,沒有任何內(nèi)容在里面。我會(huì)在這個(gè)教程的第二部分說明如何遷入源代碼。
下面,我們開始安全性設(shè)置,在左側(cè)的Users上點(diǎn)擊右鍵:
輸入上面的信息,點(diǎn)擊OK,我們就創(chuàng)建一個(gè)用戶了。按照上面的過程,分別添加用戶Developer1、tester1、manager1,好了,我們開始添加這些用戶到我們剛才創(chuàng)建的項(xiàng)目里:
點(diǎn)擊上圖中的"Add..."按鈕,在下圖中選擇我們剛才添加的用戶,點(diǎn)擊OK按鈕:
說明:大家可能注意到了下圖中的Groups,是的,你也可以先創(chuàng)建組,把用戶添加到各個(gè)組中,然后對(duì)組進(jìn)行授權(quán),操作比較簡單,在此略過。
按照下圖所示,分別對(duì)用戶【或組】進(jìn)行授權(quán):
點(diǎn)擊"確定"按鈕,上面的用戶就具有了訪問StartKit代碼庫的不同權(quán)限。
因?yàn)橛脩魋tarter在團(tuán)隊(duì)中是新來者,不希望他向代碼庫中提交新代碼,所以他只能讀取代碼庫中的代碼,不能提交代碼。tester1是測(cè)試人員,不負(fù)責(zé)代碼編寫,所以也是只讀權(quán)限。而Developer1和manager1是開發(fā)人員和項(xiàng)目經(jīng)理,自然具有讀、寫的權(quán)限。
在實(shí)際的項(xiàng)目開發(fā)過程中,Developer和tester往往不可能只有一個(gè)人,這時(shí)候使用組來授權(quán)更加方便,這個(gè)大家可以自己練習(xí)一下。
二、TotoiseSVN的基本使用方法
在 中,我已經(jīng)講解了怎樣安裝TortoiseSVN。在上面的講解中已經(jīng)講了怎么使用VisualSVN Server了,今天我要講的是,TortoiseSVN的簡單使用方法。
一、簽入源代碼到SVN服務(wù)器
假如我們使用Visual Studio在文件夾StartKit中創(chuàng)建了一個(gè)項(xiàng)目,我們要把這個(gè)項(xiàng)目的源代碼簽入到SVN Server上的代碼庫中里,首先右鍵點(diǎn)擊StartKit文件夾,這時(shí)候的右鍵菜單如下圖所示:
圖2-2-1
點(diǎn)擊Import,彈出下面的窗體,其中 是服務(wù)器名,svn是代碼倉庫的根目錄,StartKit是我們?cè)谏蟼€(gè)教程中添加的一個(gè)代碼庫:
說明:左下角的CheckBox,在第一次簽入源代碼時(shí)沒有用,但是,在以后你提交代碼的時(shí)候是非常有用的。
圖2-2-2
點(diǎn)擊OK按鈕,會(huì)彈出下面的窗體,要求輸入憑據(jù):
圖2-2-3
在上面的窗體中輸入用戶名和密碼,點(diǎn)擊OK按鈕:
圖2-2-4
如上圖所示,好了,源代碼已經(jīng)成功簽入SVN服務(wù)器了。這時(shí)候團(tuán)隊(duì)成員就可以遷出SVN服務(wù)器上的源代碼到自己的機(jī)器了。
二、簽出源代碼到本機(jī)
在本機(jī)創(chuàng)建文件夾StartKit,右鍵點(diǎn)擊Checkout,彈出如下圖的窗體:
圖2-2-5
在上圖中URL of Repository:下的文本框中輸入svn server中的代碼庫的地址,其他默認(rèn),點(diǎn)擊OK按鈕,就開始簽出源代碼了。
說明:上圖中的Checkout Depth,有4個(gè)選項(xiàng),分別是遷出全部、只簽出下一級(jí)子目錄和文件、只簽出文件、只簽出空項(xiàng)目,默認(rèn)的是第一項(xiàng)。上面的例子中,我們也可以使用web的方式訪問代碼庫,在瀏覽器中輸入
這時(shí)候也會(huì)彈出對(duì)話框,要求輸入用戶名和密碼,通過驗(yàn)證后即可瀏覽代碼庫中的內(nèi)容。
搞定!源代碼已經(jīng)成功簽出到剛才新建的StartKit目錄中。
打開StartKit目錄,可以看到如下圖的文件夾結(jié)構(gòu):
圖2-2-5
一旦你對(duì)文件或文件夾做了任何修改,那么文件或文件夾的顯示圖片機(jī)會(huì)發(fā)生變化。下圖中我修改了其中的二個(gè)文件:
圖2-2-7
大家看一下不同狀態(tài)所對(duì)應(yīng)的圖片:
圖2-2-8
我們已經(jīng)知道怎么將源代碼簽入到SVN服務(wù)器,怎么從服務(wù)器簽出代碼到本機(jī),也簡單了解了不同狀態(tài)所對(duì)應(yīng)的圖案啦。
三、提交修改過的文件到SVN服務(wù)器
上面的圖2-2-7中,我修改了位于Model文件中的二個(gè)文件ImageInfo.cs和NewsInfo.cs,下面演示如何提交到SVN服務(wù)器。
注意:提交源代碼到服務(wù)器時(shí),一定確保本機(jī)的代碼是最新版本,否則可能提交失敗,或者造成版本沖突。
在Model文件夾上點(diǎn)擊右鍵或在Model文件下的空白處點(diǎn)擊右鍵,點(diǎn)擊SVN Commit…彈出下面的窗體:
圖2-2-9
點(diǎn)擊OK按鈕后,彈出如下圖的窗體:
圖2-2-10
四、添加新文件到SVN服務(wù)器
我們?cè)贛odel文件下添加一個(gè)新的類文件UserInfo.cs,在Model文件下的空白處點(diǎn)擊右鍵,點(diǎn)擊SVN Commit…,和上面講的提交修改過的文件到SVN服務(wù)器一樣,就可以了。
另外也可以在文件UserInfo.cs上點(diǎn)擊右鍵,點(diǎn)擊TortoiseSVN=>>Add,彈出如下圖的窗體:
圖2-2-11
選中UserInfo.cs文件,點(diǎn)擊OK按鈕,這樣并沒有將這個(gè)文件提交到SVN服務(wù)器,只是將這個(gè)文件標(biāo)記為源代碼庫庫中的文件,并將其狀態(tài)置為修改狀態(tài)。之后,我們要再SVN Commit這個(gè)文件一次,才可以將其真正提交到SVN服務(wù)器上的代碼庫中。
上面講是添加文件,實(shí)際上,添加文件夾的步驟也是一樣的,這里就不說了。
五、更新本機(jī)代碼與SVN服務(wù)器上最新的版本一致
這個(gè)也很簡單,只要在需要更新的文件夾上點(diǎn)擊右鍵或在該文件下的空白處點(diǎn)擊右鍵,點(diǎn)擊SVN Update,就可以了。
注意:更新操作可能會(huì)因?yàn)榘姹緵_突而失敗,這是可以使用合并【Merge】或其他方法解決;也可能因?yàn)殒i定【Get Lock】而失敗,這是需要先解鎖【Release Lock】。
六、重命名文件或文件夾,并將修改提交到SVN服務(wù)器
只要在需要重命名的文件或文件夾上點(diǎn)擊右鍵,點(diǎn)擊TortiseSVN=>>Rename…,在彈出的窗體中輸入新名稱,點(diǎn)擊OK按鈕,就可以了。此方法也不是直接重命名,而是將該文件或文件夾的名稱標(biāo)記為重命名后名稱,也需要我們使用SVN Commit提交到SVN服務(wù)器后才真正重命名。
七、刪除文件或文件夾,并將修改提交到SVN服務(wù)器
最簡單就是,你直接刪除文件或文件夾,然后使用SVN Commit提交更新到SVN服務(wù)器。另外一種方法是在你要?jiǎng)h除的文件或文件夾上點(diǎn)擊右鍵=>>TortoiseSVN=>>Delete刪除,此方法也不是直接刪除,而是將該文件或文件夾的狀態(tài)置為刪除,也需要我們使用SVN Commit提交到SVN服務(wù)器后才真正刪除。
說明:實(shí)際上,從你把源代碼遷簽入SVN服務(wù)器開始,每一個(gè)版本的數(shù)據(jù)和文件,就算是你已經(jīng)刪除了的,也都可以隨時(shí)遷出。
以上只是TortoiseSVN最簡單的幾個(gè)功能,其實(shí)他的功能遠(yuǎn)不止這些,其他的功能大家可以在使用的過程中慢慢體會(huì),有些功能我會(huì)在下面的教程中使用到,到時(shí)候會(huì)和大家講清楚用法。
注意:向SVN服務(wù)器提交源代碼的時(shí)候,一定不要提交bin、obj等文件夾,否則會(huì)很麻煩。但是web項(xiàng)目的bin目錄除外,但是web項(xiàng)目的bin目錄中的引用其他項(xiàng)目而生成的dll不需要提交。
一個(gè)好習(xí)慣:如果項(xiàng)目中引用了其他的第三方的程序集,比如EnterpriseLibrary、FCKEditor等,這時(shí)候不要簡單從他們的安裝位置引用,而是在你的解決方案下,添加一個(gè)Library的目錄,把需要的程序集復(fù)制到這里,然后從Library目錄引用,這樣有什么好處,自己想一想吧!
1. export 和check out
export 下載源代碼
用法:
1、新建一個(gè)空的文件夾,右鍵點(diǎn)擊它,可以看到TortoiseSVN菜單以及上面的SVN Checkout。
2、不用管這個(gè)Checkout,我們選擇TortoiseSVN菜單下的Export...,接著它會(huì)讓你輸入url。
3、比如輸入【迷宮探寶】的SVN地址是:http://game-rts-framework.googlecode.com/svn/trunk/
4、其他選項(xiàng)不需要更改,Omit externals不要勾選,HEAD Revision選中表示最新的代碼版本,接著點(diǎn)擊OK即可將代碼導(dǎo)出到這個(gè)目錄中:)
check out 意思簽出,雖然和Export的效果一樣是把代碼從服務(wù)器下載到本地,但是Checkout有驗(yàn)證的功能,Checkout到某處的代碼,將會(huì)被TortoiseSVN監(jiān)視,里面的文件可以享受各種SVN的服務(wù)。
2 .每次提交代碼需要注意哪些問題
如果你更新了目錄中的文件,提交代碼需要用到commit功能,commit的功能不僅僅是上傳,他會(huì)和服務(wù)器上面的文件進(jìn)行對(duì)比,假如你更新了某個(gè)文件而服務(wù)器上面也有人更新了這個(gè)文件,并且是在你checkout之后做的更新,那么它會(huì)嘗試將你的更新和他人的更新進(jìn)行融合(merge),假如自動(dòng)merge不成功,那么報(bào)告conflict,你必須自己來手動(dòng)merge,也就是把你的更新和別人的更新無沖突的寫在一起。
commit的時(shí)候,最好填寫Log信息,這樣保證別人可以看到你的更新究竟做了寫什么。這就相當(dāng)于上傳文件并且說明自己做了那些修改,多人合作的時(shí)候log非常重要。
TortoiseSVN的commit只會(huì)上傳原先checkout然后又被修改了的文件,假如你新加入了某些文件,需要右鍵點(diǎn)擊文件選擇Add,然后文件上面會(huì)出現(xiàn)一個(gè)加號(hào),在下次commit的時(shí)候它就會(huì)被upload并且被標(biāo)記為綠色對(duì)勾。沒有綠色對(duì)勾的文件不會(huì)被commit。
假如你需要給帶有綠色對(duì)勾文件改名或者移動(dòng)它的位置,請(qǐng)不要使用windows的功能,右鍵點(diǎn)擊它們,TortoiseSVN都有相應(yīng)的操作。想象這些文件已經(jīng)不在是你本地的東西,你的一舉一動(dòng)都必須讓Tortoise知道。
假如修改了某個(gè)文件但是你后悔了,可以右鍵點(diǎn)擊它選擇Revert,它將變回上次checkout時(shí)候的情況?;蛘逺evert整個(gè)工程到任意一個(gè)從前的版本.
下面描述在使用Commit時(shí)的幾個(gè)注意點(diǎn):
-------------如有多個(gè)文件需要同時(shí)提交,同時(shí)文件在不同的目錄下,必須找到這些文件的最短目錄上點(diǎn)擊Commit,TortoiseSVN會(huì)搜索被點(diǎn)擊目錄以及該目錄下所有的文件,并將修改變動(dòng)的文件羅列在列表中。
-------------仔細(xì)查看列表中的文件,確定哪些文件時(shí)需要更新的,如果不需要更新某個(gè)已經(jīng)變化了的文件,只需要在該文件上點(diǎn)擊右鍵,選擇還原操作;選擇需要新增的文件,不要將臨時(shí)文件添加到版本庫中。
-------------如遇到文件沖突(沖突:要提交的文件已被其他人改動(dòng)并提交到版本庫中)要啟用解決沖突功能。
3. 如何保持本地版本和服務(wù)器版本同步
使用update來同步本地和服務(wù)器上的代碼。同樣是右鍵選擇SVN update,所有的更改就會(huì)從服務(wù)器端傳到你的硬盤。注意,假如別人刪除了某個(gè)文件,那么更新之后你在本地的也會(huì)被刪除。
如果本地的代碼已經(jīng)被修改,和commit一樣會(huì)先進(jìn)行merge,不成功的話就會(huì)報(bào)告conflict
4 如何在同一個(gè)在一個(gè)工程的各個(gè)分支或者主干之間切換
使用tortoise SVN-->switch
在URL中輸入branch或trunk的url地址
5.如何比較兩個(gè)版本之間的差別
本地更改
如果你想看到你的本地副本有哪些更加,只用在資源管理器中右鍵菜單下選TortoiseSVN→ 比較差異。
與另外一個(gè)分支/標(biāo)簽之間的差異
如果你想查看主干程序(假如你在分支上開發(fā))有哪些修改或者是某一分支(假如你在主干上開發(fā))有哪些修改,你可以使用右鍵菜單。在你點(diǎn)擊文件的同時(shí)按住Shift鍵,然后選擇TortoiseSVN→ URL比較。在彈出的對(duì)話框中,將特別顯示將與你本地版本做比較的版本的URL地址。
你還可以使用版本庫瀏覽器,選擇兩個(gè)目錄樹比較,也許是兩個(gè)標(biāo)記,或者是分支/標(biāo)記和最新版本。郵件菜單允許你使用比較版本來比較它們。閱讀第 5.9.2 節(jié) “比較文件夾”以便獲得更多信息。
與歷史版本的比較差異
如果你想查看某一特定版本與本地拷貝之間的差異,使用顯示日志對(duì)話框,選擇要比較的版本,然后選擇在右鍵菜單中選與本地拷貝比較差異
兩個(gè)歷史版本的比較
如果你要查看任意已提交的兩個(gè)歷史版本之間的差異,在版本日志對(duì)話框中選擇你要比較的兩個(gè)版本(一般使用 Ctrl-更改),然后在右鍵菜單中選比較版本差異
如果你在文件夾的版本日志中這樣做,就會(huì)出現(xiàn)一個(gè)比較版本對(duì)話框,顯示此文件夾的文件修改列表。閱讀第 5.9.2 節(jié) “比較文件夾”以便獲得更多信息。
提交所有修改
如果你要在一個(gè)視窗中查看某一版本的所有更改,你可以使用統(tǒng)一顯示所有比較 (GNU 片段整理)。它將顯示所有修改中的部分內(nèi)容。它很難顯示一個(gè)全面清晰的比較,但是會(huì)將所有更改都集中顯示出來。在版本日志對(duì)話框中選擇某一版本,然后在右鍵菜單中選擇統(tǒng)一顯示所有比較。
文件差異
如果你要查看兩個(gè)不同文件之間的差異,你可以直接在資源管理器中選擇這兩個(gè)文件(一般使用 Ctrl-modifier),然后右鍵菜單中選TortoiseSVN→ 比較差異。
WC文件/文件夾與URL之間的比較差異
如果你要查看你本地拷貝中的任一文件與版本庫中任一文件之間差異,
譴責(zé)信息之間的比較差異
如果你要查看的不僅是比較差異而且包括修改該版本的作者,版本號(hào)和日期,你可以在版本日志對(duì)話框中綜合比較差異和譴責(zé)信息。這里有更多詳細(xì)介紹第 5.20.2 節(jié) “追溯不同點(diǎn)”。
比較文件夾差異
TortoiseSVN 自帶的內(nèi)置工具不支持查看多級(jí)目錄之間的差異,但你可以使用支持該功能的外置工具來替代。在這里 第 5.9.4 節(jié) “其他的比較/合并工具”我們可以介紹一些我們使用過的工具。
6.提交代碼時(shí)怎樣知道自己改了哪些文件,別人改了哪些文件
7. 如何知道某個(gè)文件的某一行是誰在哪個(gè)版本修改的
8. 如何為一個(gè)SVN主工程建立分支或tag
創(chuàng)建分支使用步驟:
1、選擇你要產(chǎn)生分支的文件,點(diǎn)擊鼠標(biāo)右鍵,選擇[分支/標(biāo)記...]
2、在[至URL(T)]輸入框中將文件重命名為你的分支文件名,輸入便于區(qū)分的日志信息,點(diǎn)擊確認(rèn)。
3、在SVN倉庫中會(huì)復(fù)制一個(gè)你所指定的文件,文件名稱就是你所命名的,但是在你的本地目錄上看不到新建的分支文件名,要使你的文件更新作用到你的分支上,你必須選擇文件,點(diǎn)擊鼠標(biāo)右鍵,選擇[切換...],選擇你重命名的文件,點(diǎn)擊確定即可。這樣你的本地文件就和分支文件關(guān)聯(lián)上了,不要奇怪,這時(shí)本地目錄上看到的文件名仍然為舊的文件名。
經(jīng)驗(yàn)小結(jié):
1、如果操作的文件之前還未提交,而你又想把文件提交到新的分支上,記得一定要選擇切換
2、SVN分支的管理實(shí)際上就是把不同的分支用不同的文件保存,因此你在取得新版本的時(shí)候會(huì)發(fā)現(xiàn),不同分支的最新文件也會(huì)被獲取下來。
創(chuàng)建tag操作,相當(dāng)于把當(dāng)前的代碼版本復(fù)制一份到其他地方,然后以這個(gè)地方為出發(fā)點(diǎn)進(jìn)行新的開發(fā),與原來位置的版本互不干擾。
對(duì)于branches、tags、trunk這三個(gè)目錄,并不是subversion必需的,而是被總結(jié)的一種良好的團(tuán)隊(duì)開發(fā)習(xí)慣,其使用方法為:
1、開發(fā)者提交所有的新特性到主干。 每日的修改提交到/trunk:新特性,bug修正和其他。
2、這個(gè)主干被拷貝到“發(fā)布”分支。 當(dāng)小組認(rèn)為軟件已經(jīng)做好發(fā)布的準(zhǔn)備(如,版本1.0)然后/trunk會(huì)被拷貝到/branches/1.0。
3、項(xiàng)目組繼續(xù)并行工作,一個(gè)小組開始對(duì)分支進(jìn)行嚴(yán)酷的測(cè)試,同時(shí)另一個(gè)小組在/trunk繼續(xù)新的工作(如,準(zhǔn)備2.0),如果一個(gè)bug在任何一個(gè)位置被發(fā)現(xiàn),錯(cuò)誤修正需要來回運(yùn)送。然而這個(gè)過程有時(shí)候也會(huì)結(jié)束,例如分支已經(jīng)為發(fā)布前的最終測(cè)試“停滯”了。
4、分支已經(jīng)作了標(biāo)簽并且發(fā)布,當(dāng)測(cè)試結(jié)束,/branches/1.0作為引用快照已經(jīng)拷貝到/tags/1.0.0,這個(gè)標(biāo)簽被打包發(fā)布給客戶。
5、分支多次維護(hù)。當(dāng)繼續(xù)在/trunk上為版本2.0工作,bug修正繼續(xù)從/trunk運(yùn)送到/branches/1.0,如果積累了足夠的bug修正,管理部門決定發(fā)布1.0.1版本:拷貝/branches/1.0到/tags/1.0.1,標(biāo)簽被打包發(fā)布。
一般建立最初的repository時(shí),就建好這三個(gè)目錄,把所有代碼放入/trunk中,如:要將project1目錄下的代碼導(dǎo)入repository,project1的結(jié)構(gòu)就是:project1/branches,project1/tags,project1/trunk,project1/trunk/food.c,project1/trunk/egg.pc……,然后將project1目錄導(dǎo)入repository,建立最初的資料庫。然后export回project1,作為本地工作目錄。
-----------------------------------------------------------------------------------------------------------------------------------
visualSVN server綠化策略 擺脫兩個(gè)apache的尷尬
--------------------------------------------------------------------------------
最近把一個(gè)老機(jī)器改裝為Windows 2000 Server作為一般的服務(wù)器用,想
在上面裝個(gè)Subversion服務(wù)器,我以前用VisualSVN Server,安裝很簡單,
可現(xiàn)在發(fā)現(xiàn)VisualSVN Server不支持Windows 2000,最后選擇的是Apache
和Tigris.org的Subversion的Windows安裝包搭建的,其實(shí)也不難,現(xiàn)在
簡單記錄如下:
我用的是這兩個(gè)軟件包:
1. Apache 2.0.63(從http://httpd.apache.org/可以找到)
2. Setup Subversion 1.5.6(從http://subversion.tigris.org/可以找到,
注意是在Documents鏈接里)
首先是安裝Apache和Subversion,然后開始配置:
1. 先準(zhǔn)備一個(gè)存放Subversion庫的目錄,例如G:/Subversion/Repos
2. 創(chuàng)建一個(gè)Subversion庫,例如:
svnadmin create G:/Subversion/Repos/java
其中svnadmin是Subversion帶的程序,在Subversion安裝目錄下的bin目錄中。
3. 修改Apache的httpd.conf,加載svn模塊
在httpd.conf中加上這句,mod_dav_svn.so的路徑根據(jù)你Subversion的安裝
路徑不同而不同
LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
4. 創(chuàng)建口令文件
使用apache帶的htpasswd.exe可以創(chuàng)建口令文件,例如可以在Apache的bin
目錄下執(zhí)行:
htpasswd -cm ../conf/svn-auth-file testuser
根據(jù)提示輸入口令后,就可以在Apache的conf下生成一個(gè)口令文件svn-auth-file,
其中保存著用戶testuser及其加密后的密碼
5. 配置svn
修改httpd.cnf,添加如下配置:
<Location /svn>
DAV svn
SVNParentPath "G:/Subversion/Repos"
AuthType Basic
AuthName "Subversion repository"
AuthUserFile "C:/Program Files/Apache Group/Apache2/conf/svn-auth-file"
Require valid-user
</Location>
其中我使用的是SVNParentPath而不是SVNPath,這樣可以在指定目錄下建
多個(gè)庫,Require valid-user要求所有操作都要對(duì)用戶進(jìn)行認(rèn)證,否則Subvesion
默認(rèn)是允許匿名用戶瀏覽的。
6. 試試吧
現(xiàn)在就安裝完了,重新啟動(dòng)一下Apache就可以試試了:
在瀏覽器中輸入http://servername/svn/java/就可以看到效果了,當(dāng)然現(xiàn)在是空
的哦,注意,其中svn是DAV svn設(shè)定的,java是創(chuàng)建的Subversion庫的名字
如果是純粹局域網(wǎng)內(nèi)使用,也可以直接用svn通信協(xié)議。這樣不需要安裝或配置apache,并且svn的server在windows上支持啟動(dòng)為service模式。
好處是效率高,配置簡單。
不足是不易通過防火墻,另外無法與AD用戶關(guān)聯(lián)。