1. 程式人生 > >svn 命令詳解

svn 命令詳解

Subversion命令列表:

# 檢視svn命令
svn -h

# 命令列表
svn add 
svn blame (praise, annotate, ann) 
svn cat 
svn changelist (cl)
svn checkout (co)
svn cleanup
svn commit (ci)
svn copy (cp)
svn delete (del, remove, rm)
svn diff (di)
svn export
svn help (?, h)
svn import
svn info
svn list (ls)
svn lock
svn log
svn merge
svn mergeinfo
svn mkdir
svn move (mv, rename, ren)
svn patch
svn propdel (pdel, pd)
svn propedit (pedit, pe)
svn propget (pget, pg)
svn proplist (plist, pl)
svn propset (pset, ps)
svn relocate
svn resolve
svn resolved
svn revert
svn status (stat, st)
svn switch (sw)
svn unlock
svn update (up)
svn upgrade

# Subversion is a tool for version control.
# For additional information, see http://subversion.apache.org/
# Subversion 官網.

svn add [path]

別名:無

描述:新增檔案或目錄到你的wc,打上新增標記。這些檔案會在下一次你提交wc的時候提交到svn伺服器。

在提交前,你也可以用svn revert撤銷新增的檔案。

訪問庫:否

eg: svn add file.cpp

svn blame Target[@REV]

別名:praise,annotate,ann

描述:顯示某個已受控檔案的每一行的最後修改版本和作者

訪問庫:是

eg: svn blame file.cpp

eg: svn blame --xml file.cpp  ##加上xml引數可以以xml格式顯示每一行的屬性。

svn cat TARGET[@REV]

別名:無

描述:輸出指定目標的內容,這裡的目標一般是檔案。

訪問庫:是

eg:svn cat file.cpp

eg:svn cat file.cpp -r 2 ##顯示版本號為二的file.cpp內容。

eg:svn cat file.cpp --revision HEAD ##顯示最新版本的file.cpp內容。

svn changelist CLNAME TARGET...

svn changelist --remove TARGET

別名:cl

描述:可以將wc中的檔案從邏輯上分組.

訪問庫:否

eg:svn cl clName file.cpp file2.cpp file3.cpp  ##將file.cpp等三個檔案加入名叫clName的changelist 

eg:svn commit --changelist clName -m "ci"  ##將clName下的所有檔案提交

svn checkout URL[@REV]... [PATH]

別名:co

描述:檢出

訪問庫:否

eg:svn checkout file:///var/svn/repos/test  file:///var/svn/repos/quiz working-copies

eg:svn checkout -r 2 file:///var/svn/repos/test mine  ##check out 版本號為2的專案

svn cleanup [PATH...]

別名:無

描述:遞迴的清理WC中過期的鎖和未完成的操作。

訪問庫:否

eg:svn cleanup

svn commit [PATH...]

別名:ci

描述:把你WC的更改提交到倉庫

訪問庫:是

eg:svn commit -m "added howto section." ##預設情況下提交必須提供log message 

svn copy SRC[@REV]... DST

別名:cp

描述:copy操作可以從WC到WC;WC到URL;URL到WC;URL到URL。現在SVN只支援同一個倉庫內檔案的拷貝,不允許跨倉庫操作。

訪問庫:是

eg:svn copy -r 11 file:///var/svn/repos/test/trunk \

           file:///var/svn/repos/test/tags/0.6.32-prerelease \

           -m "Forgot to tag at rev 11"

##copy命令是建立分支和標記的常用方式。copy到url的操作隱含了提交動作,所以需要提供log messages。

svn delete PATH...

別名:del,remove,rm

描述:刪除

訪問庫:如果PATH是庫地址時會,刪除WC內的檔案不會。

eg:svn del localfile.cpp    ##刪除WC裡的檔案,在下一次提交WC的時候才會真正在倉庫裡將對應檔案刪除。

eg: svn del file:///var/svn/repos/test/yourfile  ##刪除倉庫裡的檔案

svn diff

別名:di

描述:用來比較並顯示修改點。

訪問庫:

eg:svn diff   ##最常用的方式,用來顯示WC基於最近一次更新以後的所有的本地修改點。

eg:svn diff -r 301 bin ## 比較WC和版本301中的bin目錄的修改點

eg:svn diff -r 3000:3500 file:///var/svn/repos/myProject/trunk   ##比較庫裡主幹3000版和3500版的差異。

eg:svn diff --summarize --xml http://svn.red-bean.com/repos/[email protected] http://svn.red-bean.com/repos/test  ##--summarize --xml 引數將差異情況以xml文件的方式顯示出來。

svn export [-r REV] URL[@PEGREV] [PATH]

svn export [-r REV] PATH1[@PEGREV] [PATH2]

別名:無

描述:匯出一個乾淨的目錄樹,不包含所有的受控資訊。可以選擇從URL或WC中匯出。

訪問庫:如果訪問的是URL則會。

eg:svn export file:///var/svn/repos my-export   ##匯出到my-export目錄。

svn help — Help!

別名:?,h

描述:不用解釋了

訪問庫:否。

svn import [PATH] URL

別名:無

描述:匯入本地一個目錄到庫中。但是匯入後,本地的目錄並不會處於受控狀態。

訪問庫:是。

eg:svn import -m "New import" myproj http://svn.myProject.com/repos/trunk/misc

svn info [TARGET[@REV]...]

別名:無

描述:顯示指定WC和URL資訊。

訪問庫:僅當訪問的是庫路徑時。

eg:svn info --xml http://svn.myProject.com/repos/test  ##將資訊以xml格式顯示。

svn list [TARGET[@REV]...]

別名:ls

描述:顯示目標下的檔案和目錄列表。

訪問庫:如果訪問的是庫地址就會。

eg:svn list --verbose file:///var/svn/repos   ##--verbose引數表示顯示詳細資訊。

svn lock TARGET...

別名:無

描述:對目標獲得修改鎖。如果目標已被其他使用者鎖定,則會丟擲警告資訊。用--force引數強制從其他使用者那裡獲得鎖。

訪問庫:是

eg:svn lock --force tree.jpg

svn log [PATH]

svn log URL[@REV] [PATH...]

別名:無

描述:從庫中顯示log訊息。log訊息程式碼 A :added  D:deleted  M:modified  R:replaced

訪問庫:是

eg:svn log -v http://svn.myProject.com/repos/test/ foo.c bar.c   ##詳細顯示指定URL的庫中foo.c和bar.c所有版本的log資訊。

eg:svn log -r 14:15    ##顯示當前WC的14和15版本log資訊。

eg:##如果版本號不連續,只能採用如下方式。

$ svn log -r 14 > mylog

$ svn log -r 19 >> mylog

$ svn log -r 27 >> mylog

svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]

svn merge [email protected] [email protected] [WCPATH]

svn merge [[-c M]... | [-r N:M]...] [SOURCE[@REV] [WCPATH]]

別名:無

描述:合併兩個受控源的不同之處,存放到一個WC裡。

訪問庫:只有當訪問庫地址時。

eg:svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-branch  ##合併分支上的改變項到WC,往往用於分支合併到主幹。

eg:svn merge -r 156:157 http://svn.example.com/repos/calc/branches/my-calc-branch   ##將制定URL版本156到157的所有更新合併到WC。

svn mkdir PATH...

svn mkdir URL...

別名:無

描述:在WC或庫路徑建立目錄

訪問庫:只有當訪問庫地址時。

eg:svn mkdir newdir

svn move SRC... DST

別名:mv, rename, ren

描述:等同於svn copy命令跟個svn delete命令。WC到URL的重新命名是不被允許的。

訪問庫:只有當訪問庫地址時。

eg:svn move foo.c bar.c  ##將foo.c改名成bar.c。

svn propdel PROPNAME [PATH...]

svn propdel PROPNAME --revprop -r REV [TARGET]

別名:pdel, pd

描述:從受控檔案,目錄等刪除屬性。第二種是刪除某個指定版本上的附加屬性。

訪問庫:只有當訪問庫地址時。

eg:svn propdel svn:mime-type someFile    (從someFile上移除svn:mime-type這個屬性。)

svn propedit PROPNAME TARGET...

svn propedit PROPNAME --revprop -r REV [TARGET]

別名:pedit, pe

描述:編輯屬性

訪問庫:只有當訪問庫地址時。

eg:svn propedit svn:keywords  file.c (修改file.c上的svn:keywords屬性。)

svn propget PROPNAME [TARGET[@REV]...]

svn propget PROPNAME --revprop -r REV [URL]

別名:pget,pg

描述:從檔案,目錄或版本取得指定屬性的值。

訪問庫:只有當訪問庫地址時。

eg:svn propget svn:keywords file.c   ##從file.c中取得svn:keywords屬性的值

svn proplist [TARGET[@REV]...]

svn proplist --revprop -r REV [TARGET]

別名:plist, pl

描述:列出檔案、目錄或版本上的所有附加屬性

訪問庫:只有當訪問庫地址時。

eg:svn proplist --verbose file.c

svn propset PROPNAME [PROPVAL | -F VALFILE] PATH...

svn propset PROPNAME --revprop -r REV [PROPVAL | -F VALFILE] [TARGET]

別名:pset,ps

描述:給檔案、目錄或版本附加屬性並賦值

訪問庫:只有當訪問庫地址時。

eg:svn propset svn:mime-type image/jpeg file.jpg   ##給file.jpg附加屬性svn:mime-type 其值為image/jpeg

eg:svn propset --revprop -r 25 svn:log "Journaled about trip to New York."

給版本25補上log message

eg:svn propset svn:ignore '.classpath' . 

在本地忽略掉.classpath檔案

svn resolve PATH...

別名:無

描述:將衝突的檔案標記為已解決,並且刪掉衝突產生的臨時檔案。注意這個命令並不是能把衝突解決,解決衝突還是得靠人工。

訪問庫:否

eg:svn resolve --accept mine-full foo.c   ##1.5版本後,加上--accept引數,嘗試自動處理衝突。

svn resolved PATH...

別名:無

描述:已過時,被resolve --accept取代。去除衝突的狀態和衝突臨時檔案。

訪問庫:否

svn revert PATH...

別名:無

描述:還原WC中所有的本地更改。

訪問庫:否

eg:svn revert --depth=infinity .   ##將整個目錄所有檔案還原

svn status [PATH...]

別名:stat, st

描述:輸出WC中檔案和目錄的狀態。如果WC提交,這些狀態就會同步到庫裡。

' '  沒有修改

'A'  新增

'D'  刪除

'M'  修改

'R'  替代

'C'  衝突

'I'  忽略

'?'  未受控

'!'  丟失,一般是將受控檔案直接刪除導致

訪問庫:加上--show-updates引數時會

eg:svn status wc

svn switch URL[@PEGREV] [PATH]

svn switch --relocate FROM TO [PATH...]

別名:sw

描述:將WC轉向一個其他的庫地址同步

訪問庫:是

eg:svn sw http://svn.myProject.com/repos/trunk/vendors .  ##將當前WC切換到另一個URL

svn unlock TARGET...

別名:無

描述:解鎖

訪問庫:是

eg:svn unlock somefile

svn update [PATH...]

別名:up

描述:更新WC,更新反饋有如下幾種分類。

A  新增

B  鎖破壞

D  刪除

U  更新

C  衝突

G  合併

E  存在的

訪問庫:是

eg:svn up -r22   ##更新到一個指定版本

ps:如何去除SVN中儲存的使用者授權密碼

在Subversion安裝目錄下找到auth/svn.simple目錄,將下面的檔案刪除即可。

如果在烏龜中,可以setting->saved data->Authentication Data   點 clear 即可。