%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%php
SVN http://202.231.××.×:×××/svn/03-Design/.....
%××××××××××××××××××××××××××××××× 配置 ××××××××××××××××××××××××××××××××××××%
1.安裝svn vim
sudo apt-get update
# sudo apt-get install subversion
能夠驗證一下,經過以下命令:
svn help //--svn幫助
svn --version //--svn版本
svnserve --version //--svn server版本
%××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%
2.卸載svn 服務器
利用如下命令查看本身的系統是否已經安裝了svn:
svn
若是顯示一下信息說明已安裝,可使用如下命令進行卸載:
sudo apt-get remove --purge subversion (–purge 選項表示完全刪除改軟件和相關文件)網絡
%××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%dom
3.建立SVN版本庫tcp
建立項目目錄和svn倉庫:
sudo mkdir /home/svn
sudo mkdir /home/svn/repository
sudo chmod -R 777 /home/svn/repository
sudo svnadmin create /home/svn/repository編輯器
# cd /home/svn/repository/
# ls
執行命令後,會在repository下生成如下文件
conf db format hooks locks README.txt
咱們主要關心的是conf和db文件,conf文件夾下是存放主配置文件和用戶、權限位置,db文件夾是存放svn轉儲後的數據。
對db進行權限設置:
sudo chmod -R 777 dbsvn
%×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%工具
4.設置訪問權限url
# cd conf/
# ls
執行命令後,authz passwd svnserve.conf
其中authz文件是設置用戶權限,passwd文件是存儲用戶及密碼,svnserve.conf是主配置文件,先配置主配置文件。
××××××××全部的行都必須頂格,不然報錯。
修改配置文件conf/svnserve.conf,將如下參數去掉註釋
sudo vim svnserve.conf
[general]
anon-access = none #匿名訪問權限,默認read,none爲不容許訪問
auth-access = write #認證用戶權限
password-db = passwd #用戶信息存放文件,默認在版本庫/conf下面,也能夠絕對路徑指定文件位置
authz-db = authz
添加訪問用戶:
# sudo vi passwd #格式是用戶名=密碼,採用明文密碼
[users]
xiaoming = 123
zhangsan = 123
lisi = 123
設置用戶權限:
# sudo vim authz
[groups] #定義組的用戶
manager = xiaoming
core_dev = zhangsan,lisi
[repos:/] #以根目錄起始的repos版本庫manager組爲讀寫權限
@manager = rw
[repos:/media] #core_dev對repos版本庫下media目錄爲讀寫權限
@core_dev = rw
其中,
admin = wang //用戶王屬於admin權限組
@admin = rw //admin權限組的權限是讀和寫
* = r 全部的組都具備讀權限
%××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%
5.啓動svn服務202.231.××.×:****
# sudo svnserve -d -r /home/svn (svnserve -d -r /home/svn [--listen-host 202.231.92.5])
注: -d:表示在後臺運行 -r:指定服務器的根目錄 -多ip的話–listen-host來指定監聽的ip地址.
能夠用以下命令查看svnserve是否已經運行:
ps aux | grep svnserve
# 查看是否啓動成功,可看的監聽3690端口
# sudo netstat -antp |grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 28967/svnserve
# 若是想關閉服務,可以使用
pkill svnserve (中止服務器 killall svnserve
ps aux | grep svnserve)
%×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%
6.下載svn
將服務器上代碼目錄同步到本地目錄
(若是是第一次提交文件,極可能會出現「svn:'.'不是工做副本」,即當前目錄不是工做副本,這個時候須要用到import:eg:svn import . url)
將文件checkout到本地目錄
svn checkout path(path是服務器上的目錄) 下載完成後打印<××××××「取出版本 163。」××××××>
簡寫:svn co
svn checkout svn://192.168.*.***/repos/media /svn
或者,
svn checkout svn://192.168.*.***/repos/media /svn --username zhangsan --password 123
例如:user@***$ svn checkout http://202.231.××.×:×××/svn/03-Design/.....
%×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%
7.從服務器上更新最新文件到本地
svn update /home/user/svn/RM181/TSJP/03-Design/SS/LC
%×××××××××××××××××××××××××× 使用 ××××××××××××××××××××××××××××××××××%
二、往版本庫中添加新的文件
svn add file
例如: svn add test.php(添加test.php)
svn add *.php(添加當前目錄下全部的php文件)
三、將改動的文件提交到版本庫
svn commit -m 「LogMessage「 [-N] [--no-unlock] PATH(若是選擇了保持鎖,就使用–no-unlock開關)
簡寫:svn ci
例如:svn commit -m 「add test file for my test「 ***.xlsx
四、加鎖/解鎖
svn lock -m 「LockMessage「 [--force] PATH
例如:svn lock -m 「lock test file「 test.php
svn unlock PATH
五、更新到某個版本
svn update -r m path
簡寫:svn up
例如:
svn update若是後面沒有目錄,默認將當前目錄以及子目錄下的全部文件都更新到最新版本。
svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200)
svn update test.php(更新,於版本庫同步。若是在提交的時候提示過時的話,是由於衝突,須要先update,修改文件,而後清除svn resolved,最後再提交commit)
六、查看文件或者目錄狀態
1)svn status path(目錄下的文件和子目錄的狀態,正常狀態不顯示)
【?:不在svn的控制中;M:內容被修改;C:發生衝突;A:預約加入到版本庫;K:被鎖定】M狀態通常比較多
2)svn status -v path(顯示文件和子目錄狀態)
簡寫:svn st
第一列保持相同,第二列顯示工做版本號,第三和第四列顯示最後一次修改的版本號和修改人。
注:svn status、svn diff和 svn revert這三條命令在沒有網絡的狀況下也能夠執行的,緣由是svn在本地的.svn中保留了本地版本的原始拷貝。
七、刪除文件
svn delete path -m 「delete test fle「
簡寫:svn (del, remove, rm)
例如:svn delete svn://192.168.*.1/pro/domain/test.php -m 「delete test file」
或者直接svn delete test.php 而後再svn ci -m ‘delete test file‘,推薦使用這種
八、查看日誌
svn log path
例如:svn log test.php 顯示這個文件的全部修改記錄,及其版本號的變化
九、查看文件詳細信息
svn info path
例如:svn info test.php
十、比較差別
svn diff path(將修改的文件與基礎版本比較)
例如:svn diff test.php
svn diff -r m:n path(對版本m和版本n比較差別)
簡寫:svn di
例如:svn diff -r 200:201 test.php
十一、將兩個版本之間的差別合併到當前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(將版本200與205之間的差別合併到當前文件,可是通常都會產生衝突,須要處理一下)
十二、SVN 幫助
svn help
svn help ci
%×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%
1.經常使用svn命令
獲取當前最新修訂版本號
svnlook youngest /home/svn/repos
1.1 將服務器上代碼目錄同步到本地目錄
svn checkout svn://192.168.*.***/repos/media /svn --username zhangsan --password 123
#不指定同步到本地目錄(/svn)默認是當前目錄,也能夠不指定用戶名和密碼,須要手動輸入。或使用簡寫svn co "svn://..."。
1.2 把新建文件提交到svn版本庫
具體步驟:
a) cd /svn #切換到本地代碼目錄,
b) svn add filename
#將文件加入svn管理,此時並未提交完成,另外提交文件也要在/svn目錄,不然報"svn: '..' is not a working copy"
c) svn ci filename
#添加註釋說明並提交文件,此時會用nano編輯器打開,添加註釋說明後按ctrl+x,再按y,最後回車完成提交
1.3 把修改後的文件提交到svn
svn commit -m "註釋說明" filename
1.4 更新代碼到最新版本
# 將代碼目錄全部文件更新到最新版本
svn update
# 將某個文件還原到某個版本
svn update -r 85 filename #85是修訂版號
1.5 對代碼加鎖/解鎖
# 加鎖
svn lock -m "註釋說明" filename
# 解鎖
svn unlock filename
1.6 代碼更新衝突
若是提交時提供過時的話,說明代碼衝突,需先svn update filename,再執行svn resolved filename,最後提交svn commit -m "註釋說明" filename
1.7 查看日誌
svn log filename
1.8 查看文件信息
svn info filename
1.9 版本庫合併
把庫1合併到庫2中:先把庫2代碼checkout到本地目錄(svn co url2),再進此目錄執行遷移(svn merge url1)便可
二、備份方式
2.1 svnadmin dump是官方推薦的備份方式,適用於量小(100G左右)版本庫備份,可增量備份,備份恢復較慢。
2.2 svnadmin hotcopy是全量熱拷貝的工具,所以磁盤佔用多,適用於量大(100G以上)版本庫備份,但不能達到增量備份效果,備份恢復快。
2.3 svnsync是一種實時備份方式,將數據徹底複製到另外一臺版本庫,當這臺機器故障,可迅速切換到備份那臺。
三、備份與恢復
3.1 svnadmin dump備份
# 完整備份
svnadmin dump /home/svn/repos > YYmmdd_fully_backup.svn
# 完整壓縮備份
svnadmin dump /home/svn/repos | gzip > YYmmdd_fully_backup.gz
# 備份恢復
svnadmin load /home/svn/repos < YYmmdd_fully_backup.svn
zcat YYmmdd_fully_backup.gz | svnadmin load repos
### 增量備份 ###
# 先完整備份
svnadmin dump /home/svn/repos -r 0:100 > YYmmdd_incremental_backup.svn
# 再增量備份
svnadmin dump /home/svn/repos -r 101:200 --incremental > YYmmdd_incremental_backup.svn
3.2 svnadmin hotcopy備份
%××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%
4.下載代碼庫
注:推出root權限,否則下載後的代碼沒法在其它用戶權限下編輯
#exit
$svn co svn://192.168.×.100/Openwrt
注:其中的ip地址可使用ifconfig查看
%××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××%
5.增長或刪除庫中的文件
5.1增長/刪除單個文件
$svn add text.sh
$svn del text.sh
$svn ci
5.2 批量增長/刪除文件
$svn status|grep ? |awk '{print $2}'|xargs svn add
$svn status|grep ! |awk '{print $2}'|xargs svn del