linuxsvn伺服器搭建、客戶端操作、備份與恢復

技術小胖子發表於2017-11-08

    Subversion(SVN)是一個開源的版本控制系統,管理著隨時間改變的資料。這些資料放置在一箇中央資料檔案庫中,這個檔案庫很像一個普通的檔案伺服器,它會記住每一次檔案的變動,這樣就可以把檔案恢復到舊的版本,或是瀏覽檔案的變動歷史。


本文目錄:

linux svn伺服器部署

linux svn客戶端命令操作

linux svn備份與恢復

 

一、linux svn伺服器部署

1、安裝svn

[root@yang~]#yum install -y subversion

[root@yang~]#svnserve–version

svnserve,version 1.6.11 (r934486)

 

2、建立SVN版本庫

[root@yang~]# mkdir /data/svn

[root@yang~]# svnadmin create /data/svn/project

[root@yangproject]# ls /data/svn/project/

conf  db  format  hooks  locks  README.txt

 

3、配置SVN

[root@yangproject]# cd /data/svn/project/conf/

[root@yangconf]# ls

authz  passwd svnserve.conf

 

檔案說明:

1)svnserve.conf:  svn服務配置檔案下。

2)passwd:         使用者名稱密碼檔案。

3)authz:          svn許可權配置檔案。

 

svnserve.conf檔案

 該檔案配置項分為以下5項:

       anon-access:  控制非鑑權使用者訪問版本庫的許可權。

       auth-access: 控制鑑權使用者訪問版本庫的許可權。

       password-db:  指定使用者名稱口令檔名。

       authz-db:    指定許可權配置檔名,通過該檔案可以實現以路徑為基礎的訪問控制。

       realm:        指定版本庫的認證域,即在登入時提示的認證域名稱。若兩個版本庫的認證域相同,建議使用相同的使用者名稱口令資料檔案

 

配置如下:

        [root@yangconf]# grep -E “anon-access =|auth-access =|password-db =|authz-db =|realm=”  svnserve.conf

       anon-access = none

       auth-access = write

       password-db = passwd

       authz-db = authz

       realm = /data/svn/project

 

passwd檔案

作用是配置使用者名稱和密碼

[root@yangconf]# cat passwd

[users]

yangyun= yangyunpasswd

test = testpasswd

 

authz檔案

配置使用者訪問許可權

[root@yangconf]# cat authz |grep -v `#`

[aliases]

[groups]

project_w=yangyun

project_r=test

[/]

project_w=rw

project_r=r

 

4、啟動svn服務

[root@yangconf]# svnserve -d -r /data/svn

 

5、初始化svn資料

[root@yangdjango]# svn import mysite file:///data/svn/project/ -m `initial import`

將會拷貝目錄mysite到版本庫的project下

[root@yangdjango]# svn list file:///data/svn/project

manage.py

mysite/

static/

templates/

web02/

在匯入之後,原來的目錄樹並沒有轉化成工作拷貝,為了開始工作,還是需要執行svn checkout匯出一個工作拷貝。

 

二、linux svn客戶端命令操作

1、將檔案checkout到本地目錄

svn checkout   path(path是伺服器上的目錄)

簡寫:svn co

例:

svn co svn://115.28.24.178/project   –username=yangyun –password=yangyunpasswd

#指定版本的檔案

svn co svn://115.28.24.178/project   –username=yangyun –password=yangyunpasswd -r 5 

 

2、往本地版本庫中新增新的檔案

svn add   file      #此命令得在checkout出來的路徑裡才能操作

例如:

cp /root/123.txt./

svn add   123.txt   #把123.txt加入到本地庫中

A         123.txt

 

3、將改動的檔案提交到版本庫

svn commit   -m “LogMessage” [-N] [–no-unlock] PATH(如果選擇了保鎖,就使用–no-unlock開關)

簡寫:svn ci

例:

svn commit   123.txt -m `add 123.txt`  #只提交123.txt

svn commit  -m `add 123.txt`       #預設提交當前目錄下的所以檔案

svn commit   *.txt -m `add 123.txt`     #也可以正則匹配檔案提交

 

4、加鎖/解鎖

svn lock   -m “LockMessage” [–force] PATH

例如:

svn lock   -m “lock test file” test.php

svn unlock   PATH

 

5、更新到某個版本

svn update   -r m path

例如:

svn update如果後面沒有目錄,預設將當前目錄以及子目錄下的所有檔案都更新到最新版本。

svn update   -r 200 test.php(將版本庫中的檔案test.php還原到版本200

svn update   test.php(更新,於版本庫同步。如果在提交的時候提示過期的話,是因為衝突,需要先update,修改檔案,然後清除svn resolved,最後再提交commit

簡寫:svn up

 

6、刪除檔案

svn delete   path -m “delete test fle”

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete testfile”

或者直接svn delete test.php 然後再svn ci -m `delete testfile‘,推薦使用這種

簡寫:svn (del, remove, rm)

 

7、檢視日誌

svn log   path

例如:svn log test.php 顯示這個檔案的所有修改記錄,及其版本號的變化

 

8、檢視檔案詳細資訊

svn infopath

例如:svn info test.php   #可知道路徑版本,時間,提交者等資訊

 

9、比較差異

svn diff   path(將修改的檔案與基礎版本比較)

例如:svn diff test.php

svn diff   -r m:n path(對版本m和版本n比較差異)

例如:svn diff -r 200:201 test.php   #可知道修改了哪些內容

簡寫:svn di

 

10、將兩個版本之間的差異合併到當前檔案

svn merge   -r m:n path

例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合併到當前檔案,但是一般都會產生衝突,需要處理一下)

 

11SVN 幫助

svn help

svn help   ci  

 

12、版本庫下的檔案和目錄列表

svn list   path  #顯示path目錄下的所有屬於版本庫的檔案和目錄

簡寫:svn ls

 

13、建立納入版本控制下的新目錄

svn mkdir:建立納入版本控制下的新目錄。

用法:

svn mkdirPATH    #效果等同:mkdir test;svn add test;

 

14、恢復本地修改

svn revert:恢復原始未改變的工作副本檔案 (恢復大部份的本地修改)。

revert:

用法: revert PATH…

注意: 本子命令不會存取網路,並且會解除衝突的狀況。但是它不會恢復被刪除的目錄

 

三、linux svn備份與恢復

1、全量備份:

curr=`svnlook  youngest /data/svn/project/`  #此處是查詢工程目錄的最新版本

svnadmin  dump /data/svn/repos/test –revision 0:$cur –incremental  >0-“$curr”svn.bak 

echo  $curr >/tmp/svn_revision

 

2、增量備份

old=`cat  /tmp/svn_revision`

new=`svnlook   youngest /data/svn/project/`

svnadmin  dump /data/svn/repos/test –revision $old:$new –incremental  >$old”-“$new”svn.bak 

 

3svn恢復

恢復順序從低版本逐個恢復到高版本;即,先恢復最近的一次完整備份,然後恢復緊挨著這個檔案的增量備份。

cd /data/svn/repos/ 

svnadmin   create test2 

svnadmin   load test2 < /data/svnback/20110719/0-1112svn.bak  

svnadmin   load test2 < /data/svnback/20110719/1113-1120svn.bak  

 

     本文轉自楊雲1028 51CTO部落格,原文連結:http://blog.51cto.com/yangrong/1600896,如需轉載請自行聯絡原作者


相關文章