溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

svn的搭建和使用

發(fā)布時(shí)間:2020-07-16 23:00:35 來源:網(wǎng)絡(luò) 閱讀:829 作者:黎董 欄目:建站服務(wù)器

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):

  1. 上文提到每一次提交都會保留一個(gè)副本,所以svn的數(shù)據(jù)庫容量會暴增

  2. 如果svn的服務(wù)器宕機(jī),基本上不可以工作

  3. 不適合開源的系統(tǒng)開發(fā)


svn的優(yōu)點(diǎn):

  1. 管理方便,邏輯比較清晰,符合一般人的思維習(xí)慣

  2. 容易管理,集中式的svn服務(wù)器更可以保證數(shù)據(jù)的安全性

  3. 版本一致性會更有保證

  4. 適合開發(fā)人數(shù)不多的項(xiàng)目開發(fā)

  5. 普及度比較高


svn工作流程大概可以分成如下四步驟:

  1. 在中央庫上創(chuàng)建或從主干復(fù)制一個(gè)分支;

  2. 從中央庫check out下這個(gè)分支的代碼;

  3. 增加自己的代碼文件,修改現(xiàn)存的代碼或刪除代碼文件;

  4. 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的倉庫的路徑

svn的搭建和使用

輸入用戶名和密碼,點(diǎn)擊OK

svn的搭建和使用

成功之后會出現(xiàn)一個(gè)綠色的勾

svn的搭建和使用

在svndata目錄下創(chuàng)建一個(gè)文件,然后右擊這個(gè)目錄,選擇“SVN commit”,選擇要上傳的文件

svn的搭建和使用

上傳成功

svn的搭建和使用


在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)還有很多,這里就不一一深究了。上面的命令都有解釋,大家可以自己做一下試試。



如有紕漏,歡迎指正。。。


向AI問一下細(xì)節(jié)

免責(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)容。

AI