1. 程式人生 > >centos6.5下svn伺服器的簡單搭建與使用

centos6.5下svn伺服器的簡單搭建與使用

  1. linux下搭建svn伺服器的文章已經有很多了,這裡僅記下自己最近使用的一些實踐之談,原理先不深究,供日後查閱用。

  2. 安裝:yum install subversion -y,可用rpm -ql subversion檢視svn的安裝目錄,預設在/usr/bin目錄下

  3. 建立版本庫:
    mkdir /path/to/repo
    svnadmin create /path/to/repo
    建立好後目錄下會有conf db format hooks locks README.txt這些個檔案(夾),
    其中conf是配置檔案資訊關係到登入賬號的問題,hooks是鉤子檔案會在伺服器端執行一些客戶端對應動作的響應事件

  1. 配置使用者/開發組資訊
    修改conf/passwd,直接在後面追加 username = passwd的字串明文,這裡的username是linux中存在的使用者名稱,
    QQ截圖20161016131753.png


    修改conf/svnserve.conf,註釋掉那幾行使之生效,
    anon-access,auth-access,passwd-db,realm,
    同時修改anon-access = none,
    這樣在客戶端才可以有讀日誌檔案的許可權,方便檢視不同版本的提交日誌資訊,
    修改realm = /path/to/repo指定svn版本庫目錄。
    QQ截圖20161016131827.png

  2. 到這裡個人開發的一個簡單配置就完成了,這時候用svnserve -d -r /path/to/repo
    就可以啟動svn程序然後就可以使用客戶端來連線svn://ip:port/repo使用了,這裡預設的埠是3690,
    如果是想開多個svn版本庫到別的目錄,只需要重複以上步驟至啟動時指定不同的埠號即可,
    比如使用3691埠啟動一個新的svn版本庫:svnserve -d --listen-port 3691 -r /path/to/repo
    這樣在客戶端連線的時候url是svn://ip:3691/repo

  3. 開發組配置
    多user在同一個group開發程式碼,每個user去生成一個svn的版本庫然後指向同一個程式碼目錄這個是很繁瑣而不符合規範的,
    這個時候就用上了svn的成員組配置:
    QQ截圖20161016131855.png
    修改conf/authz檔案,編輯:

    # 新增 開發使用者組groupName1
    [groups]
    groupName1= userName1[,userName2,userName3...]
    
    # 新增開發組對程式碼目錄的讀寫許可權
    [/path/to/repo]
    @groupName1 = rw
    

    這裡的userName1,userName2的使用者需是linux裡的存在的使用者,且對應的svn密碼已經在conf/passwd中指定。
    到這裡就配置好一個組成員的配置了,經測試是ok的.

  4. post-commit鉤子配置
    粗略的可以理解svn客戶端將修改資訊以一定格式傳輸到服務端儲存在固定格式的檔案裡面,
    svn up的時候再將這些檔案裡的資訊生效到程式碼目錄裡。
    我們有時候需要在服務端實時的看到程式碼更新資訊,這就用到了post-commit鉤子:
    在客戶端commit的時候觸發服務端到/path/to/repo執行svn up來更新檔案,
    同時減少日誌檔案的大小,防止服務端當機後的日誌損失。
    到svn版本庫配置資訊目錄,
    cd hooks,
    cp post-commit.tmpl post-commit
    編輯post-commit:註釋掉最後一行,新增
    export LANG=en_US.UTF-8
    /usr/bin/svn update --force /path/to/repo

    到這裡hook鉤子就配置好了,重啟svn程序,即可看到客戶端commit後文件同步更新。
    以上就是svn在centos下的簡單使用實踐,應對日常的開發需求已經足夠。