1. 程式人生 > >linux 下svn版本控制器操作總結

linux 下svn版本控制器操作總結

1. 安裝svn包:(記得切換到root使用者)
[[email protected] ~]#stall subversion

2. 建立版本庫:
先在根目錄下建立一個svnroot目錄 –用來存放版本庫相關檔案
[[email protected] ~]#mkdir svnroot
然後建立版本庫 svn_yidianhong –庫名
[[email protected] ~]# svnadmin create /svnroot/svn_yidianhong

3.刪除版本庫: (可以多建立一個來測試)
[[email protected]

~]#rm-rf /svnroot/svn_yidianhong

4.次該版本庫配置:
[[email protected] ~]# cd /svnroot/svn_yidianhong/conf
authz –使用者組以及使用者組許可權
passwd –配置使用者名稱和密碼
svnserve.conf –配置預設許可權、許可權配置檔案以及密碼配置檔案

5.執行/停止 svn服務
svnserve -d -r /svnroot/svn_yidianhong
killall svnserve

6 checkout (co) – engine_server 為檢出名字,可以不寫


svn checkout svn://192.168.163.128 engine_server

7. add – 新增檔案/目錄
svn add js –non-recursive //js目錄下檔案不讀取
svn add * –force //遞迴讀取檔案
svn commit -m “我他媽不幹了” *

8. commit (ci) –提交檔案/目錄
svn commit -m “this is index 備註” index.html

9. update (up) – 更新檔案
svn update
svn update -r 2 file – 更新指定檔案到指定版本
svn update * –重新更新會最新版本

10.delete/del/remove/rm – 刪除檔案/目錄
svn delete file
svn commit -m “要刪庫逃跑” *

11.diff (di) – 比較差異
svn diff fileneme
svn diff -r 2 fileneme
svn diff -r 2:5 fileneme

12.mkdir – 建立目錄 (類似 add 和 commit)
svn mkdir doc

13.cat –不檢出,檢視檔案
svn cat

14.revert – 版本恢復
svn revert *
svn revert –recursive *

15.衝突處理
–要養成良好的習慣,編輯前先先up
–同時編譯一行程式碼的時候回出現衝突
當提交時提示: file is out of date 時,可能就是這個問題(不一定全是)

###############################

正在傳送 build.sh
傳輸檔案資料.svn: 提交失敗(細節如下):
svn: 檔案 “/build.sh” 已經過時

###############################

這時候去 svn up

###############################

U doc/exchange/Openx.docx
U meta/City.csv
在 “build.sh” 中發現衝突。
選擇: (p) 推遲,(df) 顯示全部差異,(e) 編輯,(mc) 我的版本, (tc) 他人的版本,(s) 顯示全部選項:

###############################

可以輸入df 檢視兩個檔案的差異
如果沒有決定好怎麼改可以選擇p, 推遲提交,也可以選擇我的版本/他人版本, 或者e進行編輯.
(1)#svn resolve fileneme –accept base –使用未衝突前的內容
(2)#svn resolve fileneme –accept theirs-full –使他人的版本
(3)#svn resolve fileneme –accept mine-full –使用我的版本
(4)#svn resolve fileneme –accept working –使用當前編輯的版本
(5)#svn resolve fileneme –accept mine-conflict –衝突的部分以本地修改為準
(6)#svn resolve fileneme –accept theirs-conflict –衝突的部分以伺服器端修改為準
執行一下:svn resolved fileneme
然後svn commit -m “fix what” *

16.lock and unlock 加鎖

17. list (ls) 列出當前目錄下處於版本控制的所有檔案
svn ls
svn –recursive
svn ls -v (類似linux ll)
18. stat (st) 列出工作副本中俄資料夾的狀態
svn status
? - 無版本控制
D - 已被標記衝版本庫中刪除
M - 已被編輯過
A - 已被標記增加到版本控制中
R - 檔案被替換
C - 檔案存在衝突
! - 檔案缺失
19. log 檢視提交日誌
svn log
svn log fileneme (指定檔案)

20.info 檢視版本庫的資訊
svn info
svn info fileneme (指定檔案)
svn info –xml (輸出格式引數)

21.多版本庫的解決方案
–手動指定埠
svnserve -d -r /svnroot/svn_yidianhong –預設埠3690
svnserve -d -r /svnroot/svn_test1 –listen-port 3691 –指定埠
–只使用一個埠號
svnserve -d -r /svnroot/ –把版本服務都放在一個目錄下
svn checkout svn://192.168.163.128/svn_yidianhong –檢出要指定目錄

22. copy (cp) 複製
工作副本 ==> 工作副本:svn copy fileneme fileneme
工作副本 ==> 版本庫:svn copy fileneme svn://192.168.163.128/svn_yidianhong/fileneme -m “copy file” –不支援跨庫 直接提交的意思
版本庫 ==> 工作副本:svn copy svn://192.168.163.128/svn_yidianhong/fileneme fileneme –支援跨庫
版本庫 ==> 版本庫: svn copy svn://192.168.163.128/svn_yidianhong/ svn://192.168.163.128/svn_yidianhong/trunk -m “setup a trunk”
svn copy svn://192.168.163.128/svn_yidianhong/trunk svn://192.168.163.128/svn_yidianhong/branch -m “setup a branch” –建立分支版本,不支援跨庫

注:一般專案會有trunk 、branch 和tag 三個:trunk 主幹版本 ,branch分支版本 tag 已經發布的版本

23.hooks鉤子的應用
cp post-commit.tmpl post-commit
chmod +x post-commit
修改post-commit中的命令:例如:svn info svn://192.168.163.128/svn_yidianhong –xml >/var/www/report.xml(apaqi)
然後重啟即可

24.精簡版本庫 –丟棄部分版本
先關掉svn服務
svnadmin dump /svnroot/svn_yidianhong/ -r 6:16 >~/svn_yidianhong.repository
建立新的版本庫 svnadmin create /svnroot/new_svn_yidianhong
下載版本庫 svnadmin load /svnroot/new_svn_yidianhong<~/svn_yidianhong.repository
再複製一下配置檔案就好了(即使用以前的配置)

25.版本器遷移和重定向
版本器遷移:
(1)、24條的操作即可
(2)、整個版本器目錄壓縮 然後移植,再執行。客戶端需要進行重定向 svn switch(sw):
svn switch –relocate svn://192.168.163.128/svn_yidianhong svn://192.168.163.128/new_svn_yidianhong

總結:
1.-配置svnserve.conf
2.-執行版本庫的路徑問題
3.-svnadmin dump /load (注意< >)

svn 伺服器 把專案程式碼儲存在哪裡?
答:檔案是以加密形式存在的,所以你看不到,只是一堆無序的檔案。