1.安裝svn-1.4.4-setup.exe
2.創(chuàng)建一個目錄作為版本倉庫:如c:\snv
3.對版本倉庫目錄進(jìn)行初始化:svnadmin create c:\svn
4.啟動版本服務(wù)器:svnserve -d -r c:\svn
5.將文件夾導(dǎo)入到版本倉庫中去(d:\test 目錄中):svn import svn://localhost
需要建立環(huán)境變量:SVN_EDITOR notepad
或者svn import svn://localhost -f -c:\log.log 日志文件
6.認(rèn)證失?。?
在c:\svn\conf\svnserve.conf 修改配置(默認(rèn)是匿名用戶只有read)
anon-access = read 下面加入一行
anon-access = write
ok了 重啟服務(wù) 再次提交ok
7.我們在版本倉庫中創(chuàng)建一個虛擬目錄project2
svn mkdir svn://localhost/project2
8.我們再次提交一個文件夾放置在版本服務(wù)的虛擬目錄project2中(d:\test2 目錄中 包含test。txt)
svn import svn://localhost/project2
9.從svn中檢出project2(d:\checkout 中)
svn checkout svn://localhost/project2
10.修改test.txt內(nèi)容 并提交:svn commit test.txt
11.如果文件鎖定 可以用 svn cleanup 命令解鎖
12.刪除test.txt 通過update命令重新獲?。簊vn update test.txt
svn 權(quán)限
13.我們希望可以掌控svn的權(quán)限
anon-access = read
anon-access = write
注釋掉。這樣就不可以匿名修改了,不過還是可以匿名檢出。因?yàn)閟vn默認(rèn)是允許匿名檢出的
我們新增一個anon-access = none 這樣匿名檢出也禁止了
14.我們添加認(rèn)證用戶
將password-db = passwd 的注釋取消
打開conf下的passwd文件
[users]
# harry = harryssecret
# sally = sallyssecret
按此格式分別鍵入用戶 = 密碼即可
svn+apache
svn的權(quán)限確實(shí)不敢恭維,現(xiàn)在我們將svn和apache進(jìn)行整合
分別下載svn對應(yīng)的apache版本
1.apache的安裝 一路next即可
2.將svn安裝目錄bin下的mod_dav_svn.so,mod_authz_svn.so文件 復(fù)制到apache目錄下的modules下
修改httpd.conf文件,我這里是145,146行的注釋去掉
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
3.在173行增加我們復(fù)制的文件載入
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
4.在文件結(jié)尾增加我們的目錄映射
<Location /svn>
DAV svn
SVNPath c:/svn
</Location>
5.重啟apache 我們就可以通過:http://localhost/svn 瀏覽訪問版本庫了(不過沒有任何限制)
6.我們需要在<Location /svn></Location>配置驗(yàn)證信息
<Location /svn>
DAV svn
SVNPath c:/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile c:/passwords
Require valid-user
</Location>
AuthType表示驗(yàn)證類型,這里我們采用BASIC即基本方式,也是最常用的驗(yàn)證方式。
AuthName表示出現(xiàn)登錄對話框時(shí),窗口的標(biāo)題名。
AuthUserFile表示用戶登錄信息的存放文件,這里我們將該文件保存為E:/passwd/passwords,目前該文件還不存在,不過不要著急,我們稍后就會創(chuàng)建該文件。
Require valid-user 表示只有認(rèn)證的用戶才能訪問,否則匿名用戶也可以訪問。
7.我們創(chuàng)建登陸信息文件
apache bin目錄下的工具 htpasswd.exe
創(chuàng)建文件 并建立一個用戶
htpasswd –c c:\passwords user1
會讓你輸入密碼 采用的md5加密
htpasswd c:\passwords user2
密碼采用明文
htpasswd -p c:\passwords user3
8.重啟apache服務(wù),我們訪問和瀏覽需要輸入用戶和密碼了
也可以使用svn工具進(jìn)行管理 不過協(xié)議變成http了而不是svn了
9.多版本庫管理,我們將之前的 SVNPath c:/svn 修改為 SVNParentPath c:\svn
更改后已經(jīng)無法瀏覽倉庫內(nèi)容了,
這是因?yàn)橹皠?chuàng)建的倉庫都是以svn為根路徑的,所以一旦將它改成ParentPath后就無法正常訪問了。
實(shí)際應(yīng)用中,我們要import一個項(xiàng)目到SVN上,一般都不會import到根目錄中,而是import到項(xiàng)目特定的目錄中,
這樣當(dāng)從SVN中檢出時(shí)我們也只會檢出特定的項(xiàng)目,而不是將SVN中所有的項(xiàng)目全部檢出來,因?yàn)閭}庫中可能有很多個其他項(xiàng)目。
10.我們在svn目錄下創(chuàng)建兩個目錄myproject1。myproject2
svnadmin create c:/svn/myproject1
svnadmin create c:/svn/myproject2
采用SVNParentPath方式,新建倉庫時(shí)也并不需要重啟Apache服務(wù)器,
因?yàn)镾VNParentPath指定的路徑就是倉庫的父目錄,我們可以通過瀏覽器查看剛才import的項(xiàng)目。
這里注意地址:http://localhost/svn/project1,如果輸入http://localhost/svn,則無權(quán)限訪問,因?yàn)槟J(rèn)情況下我們只能訪問其中的子倉庫。
11.如何允許匿名用戶讀取
httpd.conf中的Require valid-user改為如下:
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
12.我們需要更細(xì)致的權(quán)限設(shè)置,
SVN倉庫中有很多的子倉庫,每個子倉庫中又有很多目錄和文件,那么我需要配置以便使某些用戶可以訪問某些倉庫,
即可以讀寫;而另外一些用戶只能讀不能寫,不過這兩種類型的用戶都需要輸入認(rèn)證信息方能進(jìn)行操作
將httpd.conf內(nèi)容修改為
<Location /svn>
DAV svn
SVNParentPath C:\svn
AuthzSVNAccessFile C:/policy
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile C:/passwords
Require valid-user
</Location>
policy文件內(nèi)容為權(quán)限信息 如下
[project1:/]
user1=rw
user2=r
user3=
對于project1路徑,user1用戶可讀可寫,而user2用戶只讀,另外的用戶user3不能讀也不能寫。這就定義了SVN倉庫的訪問策略。
這里也可以通過分組進(jìn)行定義 如下
[groups]
developers=user1,user2
testers=user3
[project1:/]
@developers=rw
@testers=
[project2:/]
@developers=rw
@testers=rw
13.備份版本庫
svnadmin hotcopy C:\svn E:\backup