ubuntu 搭建svn服務器



1. 首先安裝svn 

sudo apt-get install subversion

然後選選擇一個目錄,看自己的情況,我選擇在/目錄下,
mkdirsvn
創建一個版本倉庫

sudo svnadmin create /srv/svn/response_name response_name:是你的版本庫名稱

打開我們創建的版本哭文件夾,下面有一些文件

 #我們主要關心的是conf和db文件,conf文件夾下是存放主配置文件和用戶、權限位置,db文件夾是存放svn轉儲後的數據。
  # cd conf/
  # ls
  authz  passwd svnserve.conf
  #authz文件是設置用戶權限,passwd文件是存儲用戶及密碼,svnserve.conf是主配置文件,先配置主配置文件。
  4.3 配置版本庫
  # sudo vi svnserve.conf #將以下參數去掉註釋 
  [general] 
  anon-access = none  #匿名訪問權限,默認read,none爲不允許訪問 
  auth-access = write #認證用戶權限  
  password-db = passwd #用戶信息存放文件,默認在版本庫/conf下面,也可以絕對路徑指定文件位置 
  authz-db = authz

注意:一定要注意把多餘的空格刪除,否則就會出現一些奇怪的bug


  # sudo vi passwd   #格式是用戶名=密碼,採用明文密碼 
  [users] 
  xiaoming = 123 
  zhangsan = 123 
  lisi = 123

    # sudo viauthz  
  [groups]        #定義組的用戶 
  manager = xiaoming 
  core_dev = zhangsan,lisi 
  [repos:/]        #以根目錄起始的repos版本庫manager組爲讀寫權限 
  @manager = rw 
  [repos:/media]  #core_dev對repos版本庫下media目錄爲讀寫權限 
  @core_dev = rw

  4.4 啓動svn服務
  # sudo svnserve -d -r /home/svn
  # 查看是否啓動成功,可看的監聽3690端口
  # sudo netstat -antp |grep svnserve
  tcp   0      00.0.0.0:3690   0.0.0.0:*     LISTEN   28967/svnserve 
  # 如果想關閉服務,可使用pkill svnserve
  4.5 訪問svn
  # 訪問repos版本庫地址
  svn://192.168.1.100/repos
  # 訪問repos/media目錄地址
  svn://192.168.1.100/repos/media
  # Windows下客戶端訪問svn服務器 
  客戶端下載地址:http://tortoisesvn.net/downloads.html


5. 添加開機自動啓動
在/etc/init.d/ 下一個腳本,可以命名爲startsvn.sh

svnserve -d -r /svn (這個是你的svn 目錄)

然後,修改這個文件的權限 chmod 777 startsvn.sh

然後使用 update-rc.d startsvn.sh defaults只需兩步就可以讓svn在系統啓動時啓動


這樣我們的步驟差不多就做完了


、常用svn命令
  5.1 獲取當前最新修訂版本號
  svnlook youngest/home/svn/repos 
  5.2 將服務器上代碼目錄同步到本地目錄
  svn checkout svn://192.168.1.100/repos/media/svn --username zhangsan --password123  
 #不指定同步到本地目錄(/svn)默認是當前目錄,也可以不指定用戶名和密碼,需要手動輸入。或使用簡寫svn co"svn://..."。
  5.3 把新建文件提交到svn版本庫
  具體步驟:
  a) cd /svn   #切換到本地代碼目錄,
  b) svn addfilename  
  #將文件加入svn管理,此時並未提交完成,另外提交文件也要在/svn目錄,否則報"svn:'..' is not a working copy"
  c) svn cifilename  
 #添加註釋說明並提交文件,此時會用nano編輯器打開,添加註釋說明後按ctrl+x,再按y,最後回車完成提交
  5.4 把修改後的文件提交到svn
  svn commit -m "註釋說明" filename
  5.5 更新代碼到最新版本
  # 將代碼目錄所有文件更新到最新版本
  svnupdate  
  # 將某個文件還原到某個版本
  svn update -r 85filename #85是修訂版號
  5.6 對代碼加鎖/解鎖
  # 加鎖
  svn lock -m "註釋說明" filename
  # 解鎖
  svn unlock filename
  5.7 代碼更新衝突
  如果提交時提供過期的話,說明代碼衝突,需先svn update filename,再執行svnresolved filename,最後提交svn commit -m "註釋說明" filename
  5.8 查看日誌
  svn log filename
  5.9 查看文件信息
  svn info filename
  5.10 版本庫合併
  把庫1合併到庫2中:先把庫2代碼checkout到本地目錄(svn courl2),再進此目錄執行遷移(svn merge url1)即可
6、備份方式
  6.1 svnadmindump是官方推薦的備份方式,適用於量小(100G左右)版本庫備份,可增量備份,備份恢復較慢。
  6.2 svnadminhotcopy是全量熱拷貝的工具,因此磁盤佔用多,適用於量大(100G以上)版本庫備份,但不能達到增量備份效果,備份恢復快。
  6.3svnsync是一種實時備份方式,將數據完全複製到另一臺版本庫,當這臺機器故障,可迅速切換到備份那臺。
7、備份與恢復
  7.1 svnadmin dump備份
  # 完整備份
  svnadmin dump /home/svn/repos >YYmmdd_fully_backup.svn
  # 完整壓縮備份
  svnadmin dump /home/svn/repos | gzip >YYmmdd_fully_backup.gz
  # 備份恢復
  svnadmin load /home/svn/repos <YYmmdd_fully_backup.svn
  zcat YYmmdd_fully_backup.gz | svnadmin loadrepos
  ### 增量備份 ###
  # 先完整備份
  svnadmin dump /home/svn/repos -r 0:100 >YYmmdd_incremental_backup.svn
  # 再增量備份
  svnadmin dump /home/svn/repos -r 101:200--incremental > YYmmdd_incremental_backup.svn
  7.2 svnadmin hotcopy備份

  # 備份
  svnadmin hotcopy /home/svn/reposYYmmdd_fully_backup --clean-logs
  # 恢復
  svnadmin hotcopy YYmmdd_fully_backup/home/svn/repos


參考:http://www.linuxidc.com/Linux/2015-05/117735.htm


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