Linux 下 svn 服務端配置 原

1. 創建版本庫

單版本庫與多版本庫各有優點和缺點,主要根據具體項目情況進行選擇。

1.1. 多庫模式

  1. 創建

    ➜  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
    
  2. 公用一份 authz 和 passwd 文件

    ➜  mv blog/conf/authz ./
    ➜  mv blog/conf/passwd ./
    ➜  rm -rf resume/conf/authz resume/conf/passwd 
    
  3. 分別設置每個庫的 svnserve.conf 文件

    以 blog 爲例 vim /home/repos/blog/conf/svnserve.conf

    
    # 匿名用戶只讀(read或none)
    anon-access = none
    
    # 認證用戶可寫
    auth-access = write
    
    # 公用 passwd 文件的位置
    password-db = ../../passwd
    
    # 公用 authz 文件的位置
    authz-db = ../../authz 
    
    # 倉庫的文件名(具體在客戶端更新下載的時候能看到倉庫名字)
    realm = blog
    
  4. 修改公用的 passwd 設置用戶名、密碼

    # vim /home/repos/passwd

    [users]
    admin = admin
    lisi = pwdls
    zhansan = pwdzs
    
  5. 修改公用的 authz 設置用戶訪問權限

    vim /home/repos/authz

    [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。

1.2. 單庫模式

單庫方式比較簡單,只針對於單一項目的開發管理,並且在單庫方式下一臺服務器只能創建一個樣本庫,限制較大!

創建一個新的單庫 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

2. 啓動

注意:svn 默認監聽端口 TCP 3690,如果開啓了防火牆需提前加入可訪問列表;或者在啓動時候,使用參數 --listen-port

多庫 svnserve -d -r /home/repos

單庫 svnserve -d -r /home/repos/cms

  • -d 以守護模式運行
  • -r 指定 svn 服務的根目錄
  • --listen-port 指定 svn 服務監聽的端口號

3. 訪問

多庫模式需要指定具體的庫名,如:

➜  svn co svn://192.168.0.1/blog
➜  svn co svn://192.168.0.1/resume

單庫模式只需要輸入ip或域名地址,如:

➜  svn co svn://192.168.0.1

4. 停止服務

killall svnserve

➜  ps -aux|grep svnserv
➜  kill -9 $pid

5. 其它

5.1. 創建通用版本庫佈局

在開發過程中,推薦創建如下佈局文件:

  • trunk
  • branches
  • tags

步驟:

  1. 創建目錄佈局臨時文件

    ➜  mkdir -p /tmp/repos_layout/{trunk,branches,tags}
    ➜  tree /tmp/repos_layout/
    /tmp/repos_layout/
    |-- branches
    |-- tags
    `-- trunk
    
  2. 導入到版本庫中

    ➜  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
    
  3. 修改權限

    編輯權限文件 vim /home/repos/authz,設置普通用戶訪問 trunk,管理員訪問版本庫根目錄 trunk、branches、tags,如下:

    [resume:/]
    @admin = rw
    
    [resume:/trunk]
    @resume_rw = rw
    

    注意⚠️:權限是繼承的,管理員既然能訪問根目錄,那麼根下的子目錄也是有權限訪問的;而普通用戶一般設置較小的權限集,只能訪問指定的目錄,比如這裏的 trunk。

  4. 訪問

    普通用戶 svn co svn://192.168.1.1/resume/trunk

    管理員 svn co svn://192.168.1.1/resume/

5.x. 參照資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章