單版本庫與多版本庫各有優勢和缺點,主要根據具體項目狀況進行選擇。html
建立vim
➜ mkdir -p /home/repos ➜ svnadmin create /home/repos/resume ➜ svnadmin create /home/repos/blog ➜ cd /home/repos ➜ tree -L 2 . |-- blog | |-- README.txt | |-- conf | |-- db | |-- format | |-- hooks | `-- locks `-- resume |-- README.txt |-- conf |-- db |-- format |-- hooks `-- locks
公用一份 authz 和 passwd 文件bash
➜ mv blog/conf/authz ./ ➜ mv blog/conf/passwd ./ ➜ rm -rf resume/conf/authz resume/conf/passwd
分別設置每一個庫的 svnserve.conf 文件服務器
以 blog 爲例 vim /home/repos/blog/conf/svnserve.conf
app
# 匿名用戶只讀(read或none) anon-access = none # 認證用戶可寫 auth-access = write # 公用 passwd 文件的位置 password-db = ../../passwd # 公用 authz 文件的位置 authz-db = ../../authz # 倉庫的文件名(具體在客戶端更新下載的時候能看到倉庫名字) realm = blog
修改公用的 passwd 設置用戶名、密碼ide
# vim /home/repos/passwd
svn
[users] admin = admin lisi = pwdls zhansan = pwdzs
修改公用的 authz 設置用戶訪問權限佈局
vim /home/repos/authz
ui
[groups] admin = admin blog_rw = zhangsan resume_rw = lisi [/] @admin = rw [blog:/] @blog_rw = rw [resume:/] @resume_rw = rw
說明:admin 能夠讀寫 blog、resume;zhangsan 只能讀寫 blog;lisi 只能讀寫 resume。.net
單庫方式比較簡單,只針對於單一項目的開發管理,而且在單庫方式下一臺服務器只能建立一個樣本庫,限制較大!
建立一個新的單庫 cms
➜ mkdir -p /home/repos2 ➜ svnadmin create /home/repos2/cms
單庫模式下,配置文件在 /home/repos2/cms/conf
下,其中 svnserv.conf 和 passwd 的配置方式與多庫類似,authz 的配置有較大區別,以下:
vim /home/repos2/cms/conf/authz
[groups] admin = admin dev = wanger [/] @admin = rw @dev = rw
注意:svn 默認監聽端口 TCP 3690,若是開啓了防火牆需提早加入可訪問列表;或者在啓動時候,使用參數
--listen-port
。
多庫 svnserve -d -r /home/repos
單庫 svnserve -d -r /home/repos/cms
-d
以守護模式運行-r
指定 svn 服務的根目錄--listen-port
指定 svn 服務監聽的端口號多庫模式須要指定具體的庫名,如:
➜ svn co svn://192.168.0.1/blog ➜ svn co svn://192.168.0.1/resume
單庫模式只須要輸入ip或域名地址,如:
➜ svn co svn://192.168.0.1
killall svnserve
或
➜ ps -aux|grep svnserv ➜ kill -9 $pid
在開發過程當中,推薦建立以下佈局文件:
步驟:
建立目錄佈局臨時文件
➜ mkdir -p /tmp/repos_layout/{trunk,branches,tags} ➜ tree /tmp/repos_layout/ /tmp/repos_layout/ |-- branches |-- tags `-- trunk
導入到版本庫中
➜ svn import /tmp/repos_layout svn://192.168.0.1/resume -m 'init' Adding /tmp/repos_layout/branches Adding /tmp/repos_layout/tags Adding /tmp/repos_layout/trunk Committing transaction... Committed revision 1.
查看是否導入成功
➜ svn list --verbose svn://192.168.0.1/resume
修改權限
編輯權限文件 vim /home/repos/authz
,設置普通用戶訪問 trunk,管理員訪問版本庫根目錄 trunk、branches、tags,以下:
[resume:/] @admin = rw [resume:/trunk] @resume_rw = rw
注意⚠️:權限是繼承的,管理員既然能訪問根目錄,那麼根下的子目錄也是有權限訪問的;而普通用戶通常設置較小的權限集,只能訪問指定的目錄,好比這裏的 trunk。
訪問
普通用戶 svn co svn://192.168.1.1/resume/trunk
管理員 svn co svn://192.168.1.1/resume/