一、安裝環境
Ubuntu 11.10
二、安裝svn
$ sudo apt-get install subversion
命令默認安裝在/usr/bin/目錄
三、創建倉庫
1.確定svn倉庫的根目錄
這樣以后再為項目添加倉庫只要添加在這個目錄下面就可以了。
$ sudo mkdir /var/svn
在選擇目錄時,一定要保證目錄的所在磁盤空間足夠大。
2.為項目test創建倉庫
$ cd svn $ sudo svnadmin create test
可以查看一個生成的test倉庫的目錄結構,如下:
$ ll test/ drwxr-xr-x 6 root root 4096 Mar 30 21:21 ./ drwxr-xr-x 3 root root 4096 Mar 30 21:21 ../ drwxr-xr-x 2 root root 4096 Mar 30 21:21 conf/ drwxr-sr-x 6 root root 4096 Mar 30 21:21 db/ -r--r--r-- 1 root root 2 Mar 30 21:21 format drwxr-xr-x 2 root root 4096 Mar 30 21:21 hooks/ drwxr-xr-x 2 root root 4096 Mar 30 21:21 locks/ -rw-r--r-- 1 root root 229 Mar 30 21:21 README.txt
查看一下test/conf/目錄的文件,這是我們主要配置的目錄
$ ll test/conf/ drwxr-xr-x 2 root root 4096 Mar 30 21:21 ./ drwxr-xr-x 6 root root 4096 Mar 30 21:21 ../ -rw-r--r-- 1 root root 1080 Mar 30 21:21 authz -rw-r--r-- 1 root root 309 Mar 30 21:21 passwd -rw-r--r-- 1 root root 2279 Mar 30 21:21 svnserve.conf
svnserve.conf是test倉庫主配置文件
passwd是密碼文件,當前倉庫下的所有用戶都記錄在這里
authz是權限文件,用於為passwd中的用戶配置權限
四、配置test倉庫
三個配置文件中都不允許出現中文字符,否則會出錯誤。
我們對test倉庫配置的目標:
用戶:developer(對倉庫有寫權限),tester(對倉庫只有讀權限),其它人員無權訪問此倉庫
1.配置svnserve.conf
anon-access = none auth-access = write password-db = passwd authz-db = authz realm = test
anon-access指匿名用戶,這里給了none,即無任何權限
auth-access指有權限的用戶,這里給了write,即可以寫
以上兩項的值可為:none,read和write
password-db和authz-db分別指倉庫用戶的密碼文件和權限文件
如果你有多個倉庫,且用戶及權限都相同,可以這樣做:
將passwd和authz文件放在一個目錄中(例如:/var/svn/conf/),且修改每個倉庫的svnserve.conf:
password-db = /var/svn/conf/passwd
authz-db = /var/svn/conf/authz
realm是倉庫的唯一標識,所以確保每一個倉庫的realm值不相同。
2.配置passwd
[users] developer = developer tester = tester
這里使用的是用戶名和密碼對
3.配置authz
[/] developer = rw tester = r
這里不使用組
到這里對test倉庫的配置結束了,下面啟動服務並測試
五、啟動服務
$ sudo svnserve -d -r /var/svn
啟動時指定的目錄是倉庫的上層目錄。
如果你有多個svn倉庫,且不在同一個目錄下,可以啟動多個svnserve,只要指定端口就好了,如下:
$ sudo svnserve -d -r /var/svn --listen-port 9999
六、使用svn
1.使用developer用戶遷出代碼
$ svn checkout svn://localhost/test dev --username developer
checkout的地址格式:svn://svnserver_ip/倉庫名稱
dev指遷出后的代碼目錄
查看一下遷出后的svn信息
$ cd dev $ svn info 路徑: . URL: svn://localhost/test 版本庫根: svn://localhost/test 版本庫 UUID: 850157da-372b-492d-a43b-ed2eb1e3752f 版本: 0 節點種類: 目錄 調度: 正常 最后修改的版本: 0 最后修改的時間: 2013-03-30 21:21:31 +0800 (Sat, 2013-03-30)
2.添加文件
$ cal >> cal.log $ svn add cal.log A cal.log $ svn commit -m 'add cal.log' 增加 cal.log 傳輸文件數據 . 提交后的版本為 1。
因為這里使用的是developer用戶,所以有添加和修改權限
3.使用tester用戶遷出代碼
$ svn checkout svn://localhost/test test --username tester
4.使用tester用戶修改cal.log文件,驗證權限
$ svn commit -m 'update cal.log' svn: 提交失敗(細節如下): svn: 認證失敗
說明權限設置成功
5.更新代碼
developer用戶修改cal.log文件:
$ cat cal.log March 2013 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $ cal >> cal.log $ svn commit -m 'update cal.log' 正在發送 cal.log 傳輸文件數據 . 提交后的版本為 2。
tester用戶更新:
$ svn update 版本 2。 $ cat cal.log March 2013 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 March 2013 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
6.導入代碼
如果你已經有代碼了,可以使用import將代碼導入到版本庫
$ cd init/ $ ls init.log $ svn import svn://localhost/test --username developer 日志信息未修改,或未指定 a)終止,c)繼續,e)編輯: c 認證領域: <svn://localhost:3690> test “dev1”的密碼: 增加 init.log 提交后的版本為 3。
這樣就導入成功了,可以在test中更新一下代碼
$ cd ../test/ $ svn update A init.log 更新到版本 3。
當然,import最好在倉庫初始化時使用,否則會引起代碼覆蓋等嚴重損失。
六、總結
svn服務的配置相對較容易,這里只是最基本的使用,如需要深入了解,見參考中的網址。
在配置過程中遇到最多的可能是有寫權限的用戶會報"認證失敗"錯誤,這個問題一般都是三個配置文件有寫錯的地方,仔細檢查了。