Ubuntu配置svn備忘


一、安裝環境

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服務的配置相對較容易,這里只是最基本的使用,如需要深入了解,見參考中的網址。

在配置過程中遇到最多的可能是有寫權限的用戶會報"認證失敗"錯誤,這個問題一般都是三個配置文件有寫錯的地方,仔細檢查了。

 

七、參考

http://subversion.apache.org/

http://zh.wikipedia.org/zh-cn/Subversion

http://baike.baidu.com/view/183128.htm 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM