本方法適用於本機或小型局域網代碼版本控制。使用svn://協議。如果想使用http://協議則需安裝配置apache. 本文還基於ubuntu與windows samba共享服務。
1.安裝軟件
[c-sharp] view plaincopy
1. sudo apt-get install subversion
2.創建代碼庫
cd /home/svnuser/svn
mkdir repository_name
[c-sharp] view plaincopy
1. svnadmin create repository_name
這條命令會在當前目錄下創建名爲repository_name的文件夾,後面用hopenvm_linux作爲實例。其下包含
[c-sharp] view plaincopy
1. hopenvm_linux|-- conf/|-- db/|-- format|-- hooks/|-- locks/`-- README.txt
3. 啓動svnserve服務器
[c-sharp] view plaincopy
1. svnserve -d -r /home/svnuser/svn
-r後面是repository_name文件夾的上級目錄,啓動服務器後,可以查到庫的信息
[c-sharp] view plaincopy
1. coldfire@ubuntu:~/workspace/svn$ svn info svn://192.168.1.11/hopenvm_linuxPath: hopenvm_linuxURL: svn://192.168.1.11/hopenvm_linuxRepository Root: svn://192.168.1.11/hopenvm_linuxRepository UUID: 08e1aec2-22ff-447f-afd3-23c3ff467b4dRevision: 0Node Kind: directoryLast Changed Rev: 0Last Changed Date: 2011-06-06 04:53:28 -0700 (Mon, 06 Jun 2011)
關於svnserve.conf的內容配置來源:SVN 認證失敗
解決辦法是:
passwd文件內容:
[plain] view plaincopy
1. [users]
2. # harry = harryssecret
3. # sally = sallyssecret
4. admin = admin
5. test = test
格式是:帳號 = 密碼一個用戶爲一行
接着:將svnserver.conf的內容中:
anon-access =read 改爲 anon-access = none 即可。
總結:
一、配置
[plain] view plaincopy
1. [general]
2. anon-access = none #使非授權用戶無法訪問 如果該值爲read,則非授權用戶可讀。這就爲什麼不用輸入帳號密碼就可訪問的原因了
3. auth-access = write #使授權用戶有寫權限
4. password-db = passwd #指明密碼文件路徑
5. #authz-db = authz #訪問控制文件
6. realm = My First Repository
二、指令
啓動服務執行svnserve -d -rsvn服務根目錄
svnserve指令用於啓動svn服務,-d指明以守護模式運行,svn自動在3690端口監聽。3690是默認端口,可以使用“--listen-port=”或者“--listen-host=”來指定其它端口。-r選項用來指定svn服務的根目錄,這樣用戶就可以使用相對路徑訪問,而不用提供完整路徑。
使用以下命令檢出 svn checkout svn://127.0.0.1/dir
。IP需要根據具體情況調整,dir爲版本庫路徑,若在啓動時已指定則可省略。
版本庫信息在版本庫文件夾裏,所以要刪除版本庫只需要刪除版本庫所在的文件夾即可。另外工作副本只是自己維護的文件夾,可以用Windows直接刪掉,對別人沒有影響。千萬不要使用版本庫的刪除命令,否則版本庫裏的內容也會被刪除。
三、上面我說了,如果去掉authz-db = zuthz前面的#號,必然認證失敗。我在這要糾正一下。無知者無畏啊。經過測試,順利通過認證
1、將上面的authz-db = authz 前面的 # 號去掉
2、修改authz文件
[plain] view plaincopy
1. [aliases]
2. # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
3.
4.
5. [groups]
6. harry_and_sally = admin,sally # 這裏我採用分組形式。因爲是團隊合作,所以有多個人
7. # harry_sally_and_joe = harry,sally,&joe
8.
9.
10. # [/foo/bar]
11. # harry = rw
12. # &joe = r
13. # * =
14.
15. [bobo:/] #對bobo倉庫授權
16. @harry_and_sally = rw #r 表示讀 w 表示寫
17. # * = r # * 通配符,表示所有人,如果去掉前面#號,表示任何人可訪問(只讀訪問,不可寫)——注意:經測試,去掉#後,仍需要驗證。
如果不採用組的方式,配置如下:
[plain] view plaincopy
1. [aliases]
2. # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
3.
4. [groups]
5. # harry_and_sally = zm2714,sally
6. # harry_sally_and_joe = harry,sally,&joe
7.
8. [bobo:/]
9. admin = rw
10. # &joe = r
11. #* =r
12.
13. #[bobo:/]
14. #@harry_and_sally = rw
15. # * = r