linux下svn的常用操作命令總結

2021-09-20 16:55:59 字數 3835 閱讀 7659

匯入**檔案到 repo 版本庫

我的**檔案存放在 /var/www/html/; 

2.從版本庫匯出**:svn  co   url  directory

將**checkout到指定目錄

匯出**到當前目錄下; 執行匯出命令: svn checkout svn:  /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:  --username alex --password alex --no-auth-cache

第一列代表狀態改變的檔案的狀態:

'?'   專案不在版本控制之下;

'm'  專案已經修改了;

'!'    專案已經丟失;

'~'   專案作為一種物件(檔案、目錄或鏈結)納入版本控制,但是已經被另一種物件替代。

7.我們利用grep篩選出不在版本控制之下的檔案或者資料夾

svn st | grep ?

svn st | grep ? | awk ''

我們可以利用awk逐一獲取到他們的資訊,現在我們就只需要他們的路徑就好了,然後有svn將他們加入版本控制

其實就工作備份的最外層執行下面的**就可以將沒有加入版本控制的檔案或者檔名加入版本控制

svn status | grep ? | awk '' | 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

linux下svn命令常用操作

1 將檔案checkout到本地目錄 svn checkout path path是伺服器上的目錄 例如 svn checkout svn 簡寫 svn co 2 往版本庫中新增新的檔案 svn add file 例如 svn add test.php 新增test.php svn add php ...

Linux下常見的PHP Mysql操作命令

該文章收錄的命令是基於centos下,apache php mysql和ci框架的常見命令和解決方案。博主踩過的坑 希望能幫到大家 php專案資料夾目錄 var www html apache啟動命令 或者 sudo service httpd start apache重啟命令 或者 sudo se...

Linux 下SVN 常用的命令

1 將檔案checkout到本地目錄 svn checkout path path是伺服器上的目錄 例如 svn checkout svn 簡寫 svn co 2 往版本庫中新增新的檔案 svn add file 例如 svn addtest.php 新增test.php svn add php 新...