linux下svn的常用操作命令總結
-
匯入程式碼檔案到 repo 版本庫
我的程式碼檔案存放在 /var/www/html/;
svn程式碼版本庫的路徑 /application/svndata/repo (也就是剛剛我們建立的版本庫的位置);
執行匯入命令: svn import /var/www/html/svntest file:///application/svndata/repo -m “init dir”
2.從版本庫匯出程式碼:svn co URL directory
將程式碼checkout到指定目錄
匯出程式碼到當前目錄下; 執行匯出命令: svn checkout svn://192.168.1.5/repo /root/test –usrname A –password B –no-auth-cache
3.從工作的程式碼拷貝提交到版本庫
如果我們沒有修改程式碼,那麼提交是沒有意義的。下面我們先來修改下1.php;
cd test
vim 1.php
儲存修改後,在 svntet 目錄下先執行svn add 1.php 執行提交命令:
svn commit -m “add dir” svn commit /root/data –username alex –password alex –no-auth-cache -m “haha”
4.從版本庫更新工作的程式碼拷貝
假如有n個人在進行同一項工作,大家都是公用同一版本庫,那麼可能你現在的版本庫就不是最新的了。所以,我們需要從版本庫裡更新下工作的程式碼拷貝。
執行程式碼:
cd svntest
svn update
5.svn status — 列印工作拷貝檔案和目錄的狀態。
我們可以藉助svn status 或者 svn st快速找到新新增並沒有納入版本控制的檔案。
svn status -v test
6.SVN檢視資料:顯示一個目錄或某一版本存在的檔案列表
svn list 或 svn ls
[root@web data]# svn list svn://10.0.0.62/repo/data –username alex –password alex –no-auth-cache
第一列代表狀態改變的檔案的狀態:
`?` 專案不在版本控制之下;
`M` 專案已經修改了;
`!` 專案已經丟失;
`~` 專案作為一種物件(檔案、目錄或連結)納入版本控制,但是已經被另一種物件替代。
7.我們利用grep篩選出不在版本控制之下的檔案或者資料夾
svn st | grep ?
svn st | grep ? | awk `{print $2}`
我們可以利用awk逐一獲取到他們的資訊,現在我們就只需要他們的路徑就好了,然後有svn將他們加入版本控制
其實就工作備份的最外層執行下面的程式碼就可以將沒有加入版本控制的檔案或者檔名加入版本控制
svn status | grep ? | awk `{print $2}` | xargs svn add
再執行提交到版本庫的命令:svn commit -m “add newfile”
註釋:執行加入版本控制命令:svn add 3.php 4.php 後,版本庫的並沒有更新版本。直到下一次執行 commit 才會提交更新
8.刪除工作拷貝和版本庫的檔案
情況一:先在工作的目錄拷貝刪除,在下次執行commit命令時候,自動從版本庫裡刪除
1、先執行刪除命令:svn del 1.php 2.php
2、再執行提交命令:svn commit -m “delfile”
情況二:直接從版本庫裡刪除,然後在工作拷貝下更新(update)
執行刪除命令:svn del -m “del 4.php” file:///var/svn/svntet/4.php
在工作拷貝中在每個目錄下都會存在.svn檔案;在專案完成要上線的時候,我們怎麼樣快速都將所有的.svn檔案都刪除呢。。我們可以寫個shell指令碼來進行刪除。
find -type d -name “.svn” | xargs rm -rf
9.更新到某個版本
svn update -r m path
例如:
svn update如果後面沒有目錄,預設將當前目錄以及子目錄下的所有檔案都更新到最新版本。
svn update -r 200 test.php(將版本庫中的檔案test.php還原到版本200)
svn update test.php(更新,於版本庫同步。如果在提交的時候提示過期的話,是因為衝突,需要先update,修改檔案,然後清除svn resolved,最後再提交commit)
簡寫:svn up
加鎖/解鎖
svn lock -m “LockMessage“ [–force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
10.檢視svn版本號
在svn的工作目錄,輸入命令:svn info
11.檢視修改的所有的log記錄,含作者、日期、路徑等
svn log path
12.檢視某個具體版本號的所有修改的記錄
svn log -v -r n
13.顯示特定修改的行級詳細資訊
svn diff
要比較兩個版本有什麼差異,或者說想知道某個版本和之前的版本相比到底修改了哪些內容
例如:svn diff test.php (將修改的檔案與基礎版本對比)
svn diff -r m:n path(對版本m和版本n比較差異)
例如:svn diff -r 2036:2037 test.php
簡寫:svn di
14.將兩個版本之間的差異合併到當前檔案
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合併到當前檔案,但是一般都會產生衝突,需要處理一下)
15.建立納入版本控制下的新目錄
svn mkdir: 建立納入版本控制下的新目錄。
用法:
1、mkdir PATH…
2、mkdir URL…
建立版本控制的目錄。
1、每一個以工作副本 PATH 指定的目錄,都會建立在本地端,並且加入新增
排程,以待下一次的提交。
2、每個以URL指定的目錄,都會透過立即提交於倉庫中建立。
在這兩個情況下,所有的中間目錄都必須事先存在。
16.利用鉤子檔案觸發一些命令:
例如,我們有3個工作副本。我們想實現這樣的功能:兩個開發者,單獨有自己的工作副本和測試環境。第3個工作副本是用來觀察某開發者提交後是否和另外的開發者修改的程式碼有衝突。簡單點說就是,無論那個工作副本一提交,就是自動更新我指定的工作副本。
將hooks下的post-commit.tmpl複製一份為post-commit。在post-commit的下面加入下面的程式碼,具體情況,要視自己的機子的配置而變。這裡是舉例說明而已。
[plain] view plain copy
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
WEB=/var/www/html/test
$SVN up $WEB –username admin –password admin –no-auth-cache
將版本庫同步到當前專案中,或者說將當前版本更新到版本庫中某個版本
svn up -r x test
本文轉自淺景塵51CTO部落格,原文連結:http://blog.51cto.com/857803451/1957253 ,如需轉載請自行聯絡原作者
相關文章
- 常用基礎Linux操作命令總結與hadoop基礎操作命令LinuxHadoop
- Linux常用命令總結Linux
- linux總結及常用命令Linux
- linux系統下svn常用指令Linux
- 【Linux】—— vim常用操作命令Linux
- Linux 程式管理常用命令總結Linux
- Linux系統下常用的目錄操作命令有哪些?Linux
- Linux常用檔案操作命令Linux
- Linux常用的文字檔案操作命令Linux
- 常用kubectl命令總結
- 常用git命令總結Git
- ?Git 常用操作總結Git
- Linux常用命令:檔案操作命令Linux
- linux命令總結Linux
- linux常用基礎命令操作收集Linux
- Linux命令總結--mkdir命令Linux
- Linux 運維人員最常用 150 個命令總結Linux運維
- Linux下常用命令Linux
- RMAN命令LIST操作總結
- linux 常用命令彙總Linux
- Linux命令大全總結Linux
- Linux命令總結大全Linux
- Linux shell命令總結Linux
- SVN小總結
- SVN使用總結
- Linux 下 常見操作命令Linux
- node 常用命令總結
- Git常用命令總結Git
- Docker 常用命令總結Docker
- Kafka 常用命令總結Kafka
- windbg 常用除錯命令總結除錯
- docker常用命令總結Docker
- javascript中字串常用操作總結JavaScript字串
- Linux系統中firewalld防火牆常用的操作命令Linux防火牆
- Linux sed命令常用操作詳解及案例!Linux
- Linux運維常用的20個命令彙總!Linux運維
- 運維人員常用的Linux命令彙總運維Linux
- 【Linux】萬字總結Linux常用指令Linux
- Linux 命令總結之 topLinux