使用svn和apache打造版本控制服務器

1.安裝svn-1.4.4-setup.exe 
2.創建一個目錄作爲版本倉庫:如c:\snv 
3.對版本倉庫目錄進行初始化:svnadmin create c:\svn 
4.啓動版本服務器:svnserve -d -r c:\svn 
5.將文件夾導入到版本倉庫中去(d:\test 目錄中):svn import svn://localhost 
需要建立環境變量:SVN_EDITOR notepad 
或者svn import svn://localhost -f -c:\log.log 日誌文件 
6.認證失敗? 
在c:\svn\conf\svnserve.conf 修改配置(默認是匿名用戶只有read) 
anon-access = read 下面加入一行 
anon-access = write 
ok了 重啓服務 再次提交ok 
7.我們在版本倉庫中創建一個虛擬目錄project2 
svn mkdir svn://localhost/project2 
8.我們再次提交一個文件夾放置在版本服務的虛擬目錄project2中(d:\test2 目錄中 包含test。txt) 
svn import svn://localhost/project2 
9.從svn中檢出project2(d:\checkout 中) 
svn checkout svn://localhost/project2 
10.修改test.txt內容 並提交:svn commit test.txt 
11.如果文件鎖定 可以用 svn cleanup 命令解鎖 
12.刪除test.txt 通過update命令重新獲取:svn update test.txt 
svn 權限 
13.我們希望可以掌控svn的權限 
anon-access = read 
anon-access = write 
   註釋掉。這樣就不可以匿名修改了,不過還是可以匿名檢出。因爲svn默認是允許匿名檢出的 
我們新增一個anon-access = none 這樣匿名檢出也禁止了 
14.我們添加認證用戶 
   將password-db = passwd 的註釋取消 
   打開conf下的passwd文件 
   [users] 
   # harry = harryssecret 
   # sally = sallyssecret 
   按此格式分別鍵入用戶 = 密碼即可 
svn+apache 
svn的權限確實不敢恭維,現在我們將svn和apache進行整合 
分別下載svn對應的apache版本 
1.apache的安裝 一路next即可 
2.將svn安裝目錄bin下的mod_dav_svn.so,mod_authz_svn.so文件 複製到apache目錄下的modules下 
修改httpd.conf文件,我這裏是145,146行的註釋去掉 
LoadModule dav_module modules/mod_dav.so 
LoadModule dav_fs_module modules/mod_dav_fs.so 
3.在173行增加我們複製的文件載入 
LoadModule dav_svn_module modules/mod_dav_svn.so 
LoadModule authz_svn_module modules/mod_authz_svn.so 
4.在文件結尾增加我們的目錄映射 
<Location /svn> 
DAV svn 
SVNPath c:/svn 
</Location> 
5.重啓apache 我們就可以通過:http://localhost/svn 瀏覽訪問版本庫了(不過沒有任何限制) 
6.我們需要在<Location /svn></Location>配置驗證信息 
<Location /svn> 
DAV svn 
SVNPath c:/svn 
AuthType Basic 
AuthName "Subversion Repository" 
AuthUserFile c:/passwords 
Require valid-user 
</Location> 
AuthType表示驗證類型,這裏我們採用BASIC即基本方式,也是最常用的驗證方式。 
AuthName表示出現登錄對話框時,窗口的標題名。 
AuthUserFile表示用戶登錄信息的存放文件,這裏我們將該文件保存爲E:/passwd/passwords,目前該文件還不存在,不過不要着急,我們稍後就會創建該文件。 
Require valid-user 表示只有認證的用戶才能訪問,否則匿名用戶也可以訪問。 
7.我們創建登陸信息文件 
apache bin目錄下的工具 htpasswd.exe 
創建文件 並建立一個用戶 
htpasswd –c c:\passwords user1 
會讓你輸入密碼 採用的md5加密 
htpasswd c:\passwords user2 
密碼採用明文 
htpasswd -p c:\passwords user3 
8.重啓apache服務,我們訪問和瀏覽需要輸入用戶和密碼了 
也可以使用svn工具進行管理 不過協議變成http了而不是svn了 

9.多版本庫管理,我們將之前的 SVNPath c:/svn 修改爲 SVNParentPath c:\svn 
更改後已經無法瀏覽倉庫內容了, 
這是因爲之前創建的倉庫都是以svn爲根路徑的,所以一旦將它改成ParentPath後就無法正常訪問了。 
實際應用中,我們要import一個項目到SVN上,一般都不會import到根目錄中,而是import到項目特定的目錄中, 
這樣當從SVN中檢出時我們也只會檢出特定的項目,而不是將SVN中所有的項目全部檢出來,因爲倉庫中可能有很多個其他項目。 
10.我們在svn目錄下創建兩個目錄myproject1。myproject2 
svnadmin create c:/svn/myproject1 
svnadmin create c:/svn/myproject2 
採用SVNParentPath方式,新建倉庫時也並不需要重啓Apache服務器, 
因爲SVNParentPath指定的路徑就是倉庫的父目錄,我們可以通過瀏覽器查看剛纔import的項目。 
這裏注意地址:http://localhost/svn/project1,如果輸入http://localhost/svn,則無權限訪問,因爲默認情況下我們只能訪問其中的子倉庫。 
11.如何允許匿名用戶讀取 
httpd.conf中的Require valid-user改爲如下: 
<LimitExcept GET PROPFIND OPTIONS REPORT> 
Require valid-user 
</LimitExcept> 
12.我們需要更細緻的權限設置, 
SVN倉庫中有很多的子倉庫,每個子倉庫中又有很多目錄和文件,那麼我需要配置以便使某些用戶可以訪問某些倉庫, 
即可以讀寫;而另外一些用戶只能讀不能寫,不過這兩種類型的用戶都需要輸入認證信息方能進行操作 
將httpd.conf內容修改爲 
<Location /svn> 
DAV svn 
SVNParentPath C:\svn 
AuthzSVNAccessFile C:/policy 
AuthType Basic 
AuthName "Subversion Repository" 
AuthUserFile C:/passwords 
Require valid-user 
</Location> 
policy文件內容爲權限信息 如下 
[project1:/] 
user1=rw 
user2=r 
user3= 
對於project1路徑,user1用戶可讀可寫,而user2用戶只讀,另外的用戶user3不能讀也不能寫。這就定義了SVN倉庫的訪問策略。 
這裏也可以通過分組進行定義 如下 
[groups] 
developers=user1,user2 
testers=user3 
[project1:/] 
@developers=rw 
@testers= 
[project2:/] 
@developers=rw 
@testers=rw 
13.備份版本庫 
svnadmin hotcopy C:\svn E:\backup
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章