您好,登錄后才能下訂單哦!
svn的搭建和使用
啥是svn?
svn是一個(gè)跨平臺的開源的版本控制系統(tǒng),svn版本管理工具管理著隨時(shí)間改變的各種數(shù)據(jù),這些數(shù)據(jù)放置在一個(gè)中央資料檔案庫中,這個(gè)檔案庫很像一個(gè)普通的文件服務(wù)器或者FTP服務(wù)器,但是,與其他服務(wù)器不同的是,svn會備份并記錄每個(gè)文件每一次的修改更新變動。這樣我們就可以把任意一個(gè)時(shí)間點(diǎn)的檔案恢復(fù)到想要的某一個(gè)舊的版本,當(dāng)然也可以直接瀏覽指定文件的更新歷史記錄。
svn的缺點(diǎn):
上文提到每一次提交都會保留一個(gè)副本,所以svn的數(shù)據(jù)庫容量會暴增
如果svn的服務(wù)器宕機(jī),基本上不可以工作
不適合開源的系統(tǒng)開發(fā)
svn的優(yōu)點(diǎn):
管理方便,邏輯比較清晰,符合一般人的思維習(xí)慣
容易管理,集中式的svn服務(wù)器更可以保證數(shù)據(jù)的安全性
版本一致性會更有保證
適合開發(fā)人數(shù)不多的項(xiàng)目開發(fā)
普及度比較高
svn工作流程大概可以分成如下四步驟:
在中央庫上創(chuàng)建或從主干復(fù)制一個(gè)分支;
從中央庫check out下這個(gè)分支的代碼;
增加自己的代碼文件,修改現(xiàn)存的代碼或刪除代碼文件;
commit代碼,假設(shè)有人在剛剛的分支上提交了代碼,你就會被提示代碼過期,你要先up你的代碼后再提交,up代碼的時(shí)候如果出現(xiàn)了沖突,需要解決好沖突后再進(jìn)行提交。
實(shí)驗(yàn)
環(huán)境搭建
[root@svnserver ~]# yum -y install subversion #首先當(dāng)然是下載軟件
[root@svnserver ~]# mkdir -p /svn/data #創(chuàng)建版本庫存放目錄
[root@svnserver ~]# mkdir -p /svn/auth #創(chuàng)建認(rèn)證相關(guān)文件的存放目錄
[root@svnserver ~]# svnserve -d -r /svn/data/ #啟動svn,-d指定后臺運(yùn)行,-r選項(xiàng)指定版本庫存放目錄
svnserve可用選項(xiàng):
-d [--daemon] : 后臺模式
-i [--inetd] : inetd 模式
-t [--tunnel] : 隧道模式
-X [--listen-once] : 監(jiān)聽一次方式(調(diào)試用)
-r [--root] ARG : 服務(wù)的根目錄
-R [--read-only] : 強(qiáng)制只讀;覆蓋版本庫配置文件
--config-file ARG : 從文件 ARG 讀取配置
--listen-port ARG : 監(jiān)聽端口
[方式: daemon, listen-once]
--listen-host ARG : 監(jiān)聽主機(jī)名稱或IP地址
[方式: daemon, listen-once]
-T [--threads] : 使用線程代替進(jìn)程 [方式: daemon]
--foreground : 在前臺運(yùn)行(調(diào)試用)
[方式: daemon]
--log-file ARG : svnserve 日志文件
--pid-file ARG : 寫進(jìn)程 PID 到文件 ARG
[方式: daemon, listen-once]
--tunnel-user ARG : 隧道用戶名(默認(rèn)是當(dāng)前UID對應(yīng)的用戶名)
[方式: tunnel]
-h [--help] : 顯示本幫助
--version : 顯示程序版本信息
[root@svnserver ~]# ps -ef |grep svn |grep -v grep #查看svn進(jìn)程
root 2720 1 0 04:41 ? 00:00:00 svnserve -d -r /svn/data/
[root@svnserver ~]# lsof -i:3690 #查看svn的監(jiān)聽端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
svnserve 2720 root 3u IPv4 21398 0t0 TCP *:svn (LISTEN)
[root@svnserver ~]# svnadmin create /svn/data/dir #創(chuàng)建版本庫
[root@svnserver ~]# tree /svn/data/dir/ #初始化版本庫之后會生成在版本庫目錄下生成許多文件和目錄,比較重要的是conf目錄和hooks目錄,前者用來存放和配置相關(guān)的文件,后者存放的是鉤子腳本
/svn/data/dir/
├── conf
│ ├── authz
│ ├── passwd
│ └── svnserve.conf
├── hooks
│ ├── post-commit.tmpl
│ ├── post-lock.tmpl
│ ├── post-revprop-change.tmpl
│ ├── post-unlock.tmpl
│ ├── pre-commit.tmpl
│ ├── pre-lock.tmpl
│ ├── pre-revprop-change.tmpl
│ ├── pre-unlock.tmpl
│ └── start-commit.tmpl
[root@svnserver conf]# cp svnserve.conf svnserve.conf.bak #要養(yǎng)成修改配置文件之前先保存一份備份的習(xí)慣
[root@svnserver conf]# cat svnserve.conf | egrep -v "(#|^$)" #修改成如下
[general]
anon-access = read #匿名連接的權(quán)限
auth-access = write #認(rèn)證連接的權(quán)限
password-db = /svn/auth/passwd #用戶認(rèn)證文件
authz-db = /svn/auth/authz #用戶權(quán)限文件
[root@svnserver conf]# cp authz passwd /svn/auth/ #拷貝認(rèn)證、權(quán)限文件到自定義的目錄下
[root@svnserver conf]# cd /svn/auth/
[root@svnserver auth]# chmod 700 * #修改權(quán)限為700
[root@svnserver auth]# cat passwd | egrep -v "(#|^$)" #修改如下
[users]
lhx = 1
[root@svnserver auth]# cat authz | egrep -v "(#|^$)" #修改如下
[dir:/]
lhx = rw
重啟svn
[root@svnserver auth]# pkill svnserve
[root@svnserver auth]# svnserve -d -r /svn/data/
svn在windows下的使用
在windows客戶端創(chuàng)建一個(gè)目錄,然后右鍵點(diǎn)擊這個(gè)目錄,選擇“SVN Checkout”,輸入svn的倉庫的路徑
輸入用戶名和密碼,點(diǎn)擊OK
成功之后會出現(xiàn)一個(gè)綠色的勾
在svndata目錄下創(chuàng)建一個(gè)文件,然后右擊這個(gè)目錄,選擇“SVN commit”,選擇要上傳的文件
上傳成功
在svn服務(wù)器查看上傳的文件
[root@svnserver ~]# svn list svn://192.168.83.134/dir --verbose --username=lhx --password=1
1 lhx May 22 04:59 ./
1 lhx 0 May 22 04:59 test.txt
svn在linux下的使用
常用的命令:svn<subcommand> [options] [args]
checkout (co) #從源碼庫取出一個(gè)工作版本的拷貝
commit (ci) #提交當(dāng)前工作拷貝的更改,這個(gè)地方有可能出現(xiàn)代碼沖突
copy(cp) #做一個(gè)工作拷貝的拷貝
delete (del,remove,rm) #刪除本地或者svn server response上的文件或者目錄
diff(di) #比較某個(gè)文件與庫中的對應(yīng)文件的不同
export # 導(dǎo)出一個(gè)無版本控制的目錄樹拷貝,一般用于導(dǎo)出發(fā)行,或者投入運(yùn)行的版本
import #將本地當(dāng)前目錄下的文件導(dǎo)入到svn response中
info #當(dāng)前目錄工作拷貝中某文件信息
status(stat,st) #svn工作拷貝當(dāng)前狀態(tài),與svn server上的源碼比較的結(jié)果
update (up) # 將svn server端文件同步到本地
[root@client ~]# yum -y install subversion
[root@client ~]# svn co svn://192.168.83.134/dir /svndata --username=lhx --password=1 #從庫里面checkout文件下來
-----------------------------------------------------------------------
A /svndata/test.txt
Checked out revision 1.
[root@client ~]# tree /svndata/
/svndata/
└── test.txt
如果checkout的時(shí)候報(bào)錯:
svn:Can’t convert string from ‘UTF-8’ to native encoding:
可以用如下方法解決:
[root@client ~]# export LC_CTYPE="en_US.UTF-8"
[root@client ~]# export LC_ALL=
當(dāng)然工作中,會用到的命令和選項(xiàng)還有很多,這里就不一一深究了。上面的命令都有解釋,大家可以自己做一下試試。
如有紕漏,歡迎指正。。。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。