linux svn服務器搭建、客戶端操做、備份與恢復

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


本文目錄:html

linux svn服務器部署linux

linux svn客戶端命令操做web

linux svn備份與恢復django

 

1、linux svn服務器部署

1、安裝svn服務器

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

[root@yang~]#svnserve--versiondom

svnserve,version 1.6.11 (r934486)ide

 

2、建立SVN版本庫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導出一個工做拷貝。

 

2、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...

注意: 本子命令不會存取網絡,而且會解除衝突的情況。可是它不會恢復被刪除的目錄

 

3、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  

相關文章
相關標籤/搜索