svn的用法

WC:Working Copy 你的工作區(qū)

Versioned:受控的灌灾;受版本控制的

SVN是什么?

SVN是開源的版本控制系統(tǒng)。

比CVS更多的特性棉浸。一個更好的CVS?因此SVN具有大部分CVS擁有的特性刺彩。

不僅僅是文件受控迷郑,目錄也加入版本控制。

復(fù)制创倔,刪除嗡害,重命名這些操作都是受控的。

特殊作用的元數(shù)據(jù)(屬性)畦攘。

提交事務(wù)原子性霸妹。提交完成之前任何一個部分都不會正真生效。版本號基于提交念搬,而不是基于文件抑堡。提交時的log message也是依附于提交的那個版本。

創(chuàng)建分支和標(biāo)記非常簡單朗徊。簡單的通過copy命令就可以創(chuàng)建分支和標(biāo)記首妖。

合并跟蹤。在合并時協(xié)助你處理所有的更改點爷恳。

文件鎖定有缆。svn支持文件鎖定修改策略。

Unix的link可以受控了。前提是WC必須在Unix下棚壁。

可選的Apache network server杯矩,基于WEBDAV/DeltaV 協(xié)議。熟悉Apache的管理員會很喜歡這一點袖外。

內(nèi)置的server選擇(svnserve)史隆。如果不想用Apache,可以試試Svn自己的server:svnserve曼验。同樣也能提供授權(quán)和驗證泌射,ssh通道等功能。

方便解析的輸出鬓照。svn的輸出盡量做到方便閱讀和方便機器解析熔酷。

沖突解決交互性良好。svn命令行客戶端提供多種不同的方式解決沖突豺裆。

svn提供一個實用工具拒秘,svnsync來實現(xiàn)從主庫到只讀附屬庫的同步。

持續(xù)寫入代理功能讓只讀的附屬庫專門處理所有的讀請求臭猜。所有的寫請求交給主庫處理躺酒。這個功能只在使用Apache WebDAV server的時候才有效。

基于本地化的客戶機服務(wù)器體系获讳,分層的庫阴颖,明晰的API方便擴展活喊。

高效處理二進制文件丐膝。

性能消耗與更改點的數(shù)量成正比。

svn的api可以和多種語言集成钾菊。Python帅矗,Perl,Java,Ruby(svn本身是用C寫的)

ChangeLists功能。

Svn的安裝分客戶端和服務(wù)端煞烫。

你可以在如下地址找到下載:http://subversion.tigris.org/

這篇文章主要介紹的是svn客戶端的命令浑此,你至少需要安裝客戶端。默認就是以SVN做版本控制的滞详。如果你不想在自己機器上安裝服務(wù)版凛俱,google code是個練習(xí)svn命令的好地方。

http://code.google.com上申請托管項目很簡單料饥,但是現(xiàn)在不支持svn lock蒲犬。目前最大支持1G空間。

以下是svn客戶端常用命令一覽:

svn add [path]

別名:無

描述:添加文件或目錄到你的wc岸啡,打上新增標(biāo)記原叮。這些文件會在下一次你提交wc的時候提交到svn服務(wù)器。

在提交前,你也可以用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參數(shù)可以以xml格式顯示每一行的屬性擂送。

svn cat TARGET[@REV]

別名:無

描述:輸出指定目標(biāo)的內(nèi)容,這里的目標(biāo)一般是文件唯欣。

訪問庫:是

eg:svn cat file.cpp

eg:svn cat file.cpp -r 2 ##顯示版本號為二的file.cpp內(nèi)容嘹吨。

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

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∑ダ澹現(xiàn)在SVN只支持同一個倉庫內(nèi)文件的拷貝,不允許跨倉庫操作脐区。

訪問庫:是

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命令是創(chuàng)建分支和標(biāo)記的常用方式愈诚。copy到url的操作隱含了提交動作,所以需要提供log messages牛隅。

svn delete PATH...

別名:del炕柔,remove,rm

描述:刪除

訪問庫:如果PATH是庫地址時會媒佣,刪除WC內(nèi)的文件不會匕累。

eg:svn del localfile.cpp ? ?##刪除WC里的文件,在下一次提交WC的時候才會真正在倉庫里將對應(yīng)文件刪除默伍。

eg: svn del file:///var/svn/repos/test/yourfile ?##刪除倉庫里的文件

svn diff

別名:di

描述:用來比較并顯示修改點欢嘿。

訪問庫:

eg:svn diff ? ##最常用的方式,用來顯示W(wǎng)C基于最近一次更新以后的所有的本地修改點也糊。

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/test@r2 http://svn.red-bean.com/repos/test ?##--summarize --xml 參數(shù)將差異情況以xml文檔的方式顯示出來。

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

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

別名:無

描述:導(dǎo)出一個干凈的目錄樹狸剃,不包含所有的受控信息掐隐。可以選擇從URL或WC中導(dǎo)出钞馁。

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

eg:svn export file:///var/svn/repos my-export ? ##導(dǎo)出到my-export目錄。

svn help — Help!

別名:?,h

描述:不用解釋了

訪問庫:否僧凰。

svn import [PATH] URL

別名:無

描述:導(dǎo)入本地一個目錄到庫中探颈。但是導(dǎo)入后,本地的目錄并不會處于受控狀態(tài)允悦。

訪問庫:是膝擂。

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

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

別名:無

描述:顯示指定WC和URL信息虑啤。

訪問庫:僅當(dāng)訪問的是庫路徑時。

eg:svn info --xml http://svn.myProject.com/repos/test ?##將信息以xml格式顯示架馋。

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

別名:ls

描述:顯示目標(biāo)下的文件和目錄列表狞山。

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

eg:svn list --verbose file:///var/svn/repos ? ##--verbose參數(shù)表示顯示詳細信息叉寂。

svn lock TARGET...

別名:無

描述:對目標(biāo)獲得修改鎖萍启。如果目標(biāo)已被其他用戶鎖定,則會拋出警告信息屏鳍。用--force參數(shù)強制從其他用戶那里獲得鎖勘纯。

訪問庫:是

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 ? ?##顯示當(dāng)前WC的14和15版本log信息驳遵。

eg:##如果版本號不連續(xù),只能采用如下方式山涡。

$ svn log -r 14 > mylog

$ svn log -r 19 >> mylog

$ svn log -r 27 >> mylog

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

svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]

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

別名:無

描述:合并兩個受控源的不同之處堤结,存放到一個WC里。

訪問庫:只有當(dāng)訪問庫地址時鸭丛。

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或庫路徑創(chuàng)建目錄

訪問庫:只有當(dāng)訪問庫地址時瘾带。

eg:svn mkdir newdir

svn move SRC... DST

別名:mv, rename, ren

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

訪問庫:只有當(dāng)訪問庫地址時看政。

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

svn propdel PROPNAME [PATH...]

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

別名:pdel, pd

描述:從受控文件科盛,目錄等刪除屬性帽衙。第二種是刪除某個指定版本上的附加屬性菜皂。

訪問庫:只有當(dāng)訪問庫地址時贞绵。

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

svn propedit PROPNAME TARGET...

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

別名:pedit, pe

描述:編輯屬性

訪問庫:只有當(dāng)訪問庫地址時恍飘。

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

描述:從文件,目錄或版本取得指定屬性的值章母。

訪問庫:只有當(dāng)訪問庫地址時母蛛。

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

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

svn proplist --revprop -r REV [TARGET]

別名:plist, pl

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

訪問庫:只有當(dāng)訪問庫地址時乳怎。

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

描述:給文件彩郊、目錄或版本附加屬性并賦值

訪問庫:只有當(dāng)訪問庫地址時。

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...

別名:無

描述:將沖突的文件標(biāo)記為已解決,并且刪掉沖突產(chǎn)生的臨時文件秫逝。注意這個命令并不是能把沖突解決恕出,解決沖突還是得靠人工。

訪問庫:否

eg:svn resolve --accept mine-full foo.c ? ##1.5版本后违帆,加上--accept參數(shù)浙巫,嘗試自動處理沖突。

svn resolved PATH...

別名:無

描述:已過時刷后,被resolve --accept取代的畴。去除沖突的狀態(tài)和沖突臨時文件。

訪問庫:否

svn revert PATH...

別名:無

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

訪問庫:否

eg:svn revert --depth=infinity . ? ##將整個目錄所有文件還原

svn status [PATH...]

別名:stat, st

描述:輸出WC中文件和目錄的狀態(tài)丧裁。如果WC提交,這些狀態(tài)就會同步到庫里含衔。

一般狀態(tài)有 ? ? ? ? ' ' ?沒有修改

'A' ?新增

'D' ?刪除

'M' ?修改

'R'??替代

'C' ?沖突

'I' ?忽略

'?' ?未受控

'!' ?丟失渣慕,一般是將受控文件直接刪除導(dǎo)致

訪問庫:加上--show-updates參數(shù)時會

eg:svn status wc

svn switch URL[@PEGREV] [PATH]

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

別名:sw

描述:將WC轉(zhuǎn)向一個其他的庫地址同步

訪問庫:是

eg:svn sw http://svn.myProject.com/repos/trunk/vendors . ?##將當(dāng)前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 ? ##更新到一個指定版本

文/日風(fēng)和(簡書作者)

原文鏈接:http://www.reibang.com/p/676cd710fc0d

著作權(quán)歸作者所有逊桦,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),并標(biāo)注“簡書作者”抑进。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末强经,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子寺渗,更是在濱河造成了極大的恐慌匿情,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件信殊,死亡現(xiàn)場離奇詭異炬称,居然都是意外死亡,警方通過查閱死者的電腦和手機涡拘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門玲躯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳄乏,你說我怎么就攤上這事跷车。” “怎么了橱野?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵朽缴,是天一觀的道長。 經(jīng)常有香客問我水援,道長密强,這世上最難降的妖魔是什么茅郎? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮或渤,結(jié)果婚禮上只洒,老公的妹妹穿的比我還像新娘。我一直安慰自己劳坑,他們只是感情好毕谴,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著距芬,像睡著了一般涝开。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上框仔,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天舀武,我揣著相機與錄音,去河邊找鬼离斩。 笑死银舱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跛梗。 我是一名探鬼主播寻馏,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼核偿!你這毒婦竟也來了诚欠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤漾岳,失蹤者是張志新(化名)和其女友劉穎轰绵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尼荆,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡左腔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捅儒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片液样。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖野芒,靈堂內(nèi)的尸體忽然破棺而出蓄愁,到底是詐尸還是另有隱情,我是刑警寧澤狞悲,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站妇斤,受9級特大地震影響摇锋,放射性物質(zhì)發(fā)生泄漏丹拯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一荸恕、第九天 我趴在偏房一處隱蔽的房頂上張望乖酬。 院中可真熱鬧,春花似錦融求、人聲如沸咬像。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽县昂。三九已至,卻和暖如春陷舅,著一層夾襖步出監(jiān)牢的瞬間倒彰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工莱睁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留待讳,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓仰剿,卻偏偏與公主長得像创淡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子南吮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容