顛覆(SVN)是一個開源的版本控制系統,管理著隨時間改變的數據。這些數據放置在一個中央資料檔案庫中,這個檔案庫很像一個普通的文件服務器,它會記住每一次文件的變動,這樣就可以把檔案恢復到舊的版本,或是瀏覽文件的變動歷史。
本文目錄:
linux svn 服務器部署
linux svn 客戶端命令操作
linux svn 備份與恢復
一, linux svn 服務器部署
1 ,安裝svn
[root @ yang〜] #yum install -y subversion
[root @ yang〜] #svnserve - 版本
svnserve的,版本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格式鉤子鎖定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 =寫入
password-db = passwd
authz-db = authz
realm = / data / svn / project
passwd文件的文件
作用是配置用戶名和密碼
[root @ yangconf] #cat passwd
[用戶]
yangyun = yangyunpasswd
test = testpasswd
AuthZ的的文件
配置用戶訪問權限
[root @ yangconf] #cat authz | grep -v'#'
[別名]
[組]
project_w =楊雲
project_r =測試
[/]
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的到版本庫的項目下
[root @ yangdjango] #svn list file:/// data / svn / project
manage.py
我的網站/
靜態的/
模板/
web02 /
在導入之後,原來的目錄樹並沒有轉化成工作拷貝,為了開始工作,還是需要運行svn checkout導出一個工作拷貝。
二, linux svn 客戶端命令操作
1 ,將文件checkout 到本地目錄
svn checkout 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加入到本地庫中
一個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“鎖定測試文件”test.php
SVN解開PATH
5 ,更新到某個版本
SVN更新-rm路徑
例如:
svn update 如果後面沒有目錄,默認將當前目錄以及子目錄下的所有文件都將更新到最新版本。
svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200
svn update test.php(更新,於版本庫同步。如果在提交的時候提示過期的話,是因為衝突,需要先更新,修改文件,然後清除svn resolved,最後再提交commit
簡寫:svn up
6 ,刪除文件
SVN刪除路徑-m“刪除測試文件”
例如: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,取出,RM)
7 ,查看日誌
SVN日誌路徑
例如:svn log test.php顯示這個文件的所有修改記錄,及其版本號的變化
8 ,查看文件詳細信息
svn infopath
例如:svn info test.php#可知道路徑版本,時間,提交者等信息
9 ,比較差異
svn diff path(將修改的文件與基礎版本比較)
例如:svn diff test.php
SVN DIFF -rm:N路徑(對版本米和版本Ñ比較差異)
例如:svn diff -r 200:201 test.php#可知道修改了哪些內容
簡寫:svn di
10 ,將兩個版本之間的差異合併到當前文件
svn merge -rm:n路徑
例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合併到當前文件,但是一般都會產生衝突,需要處理一下)
11 ,SVN 幫助
SVN幫助
svn help ci
12 ,版本庫下的文件和目錄列表
svn list path#顯示路徑目錄下的所有屬性版本庫的文件和目錄
簡寫:svn ls
13 ,創建納入版本控制下的新目錄
svn mkdir:創建納入版本控制下的新目錄。
用法:
svn mkdirPATH#效果等同:mkdir test; svn add test;
14 ,恢復本地修改
svn revert:恢復原始未改變的工作副本文件(恢復大部份的本地修改)。
還原:
用法:revert PATH ...
注意:本子命令不會存取網絡,並且會解除衝突的狀況但是它不會恢復被刪除的目錄
三, linux svn 備份與恢復
1 ,全量備份:
curr =`svnlook youngest / data / svn / project /`#此處是查詢工程目錄的最新版本
svnadmin du mp / data / svn / repos / test --revision 0:$ cur --i nc remental> 0 - “$ curr”svn.bak
echo $ curr> / tmp / svn_revision
2 ,增量備份
舊= cat / tmp / svn_revision`
new =`svnlook youngest / data / svn / project /`
svnadmin dump / data / svn / repos / test --revision $ old:$ new --incremental> $ old“ - ”$ new“svn.bak
3 ,svn 恢復
恢復順序從低版本逐個恢復到高版本;即,先恢復最近的一次完整備份,然後恢復緊挨著這個文件的增量備份。
cd / data / svn / repos /
svnadmin的創建TEST2
svnadmin load test2 </data/svnback/20110719/0-1112svn.bak
svnadmin load test2 </data/svnback/20110719/1113-1120svn.bak
四,配置項目/ Hooks /中的鉤子文件,實現客戶端提交到服務端后,自動更新服務端的指定版本庫
1)的Windows:後commit.bat
@echo off
SET REPOS=%1
SET USER=%2
SET SVN="D:\ProgramFiles\VisualSVN_Serve\bin/svn.exe"
SET DIR="D:\IntranetRoot\wwwroot\intranetSite"
(call %SVN% update %DIR% --quiet --username svn_sync --password int9527 --non-interactive)
2)CentOS6.5:post-commit.sh(xm)
本文出自“ 楊雲 ”博客,轉載請與作者聯繫!