SVN使用

SVN版本:1.5 及更新版本

名詞說明:

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

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

SVN是什么歹袁?

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

比CVS更多的特性叫榕。一個(gè)更好的CVS熄赡?因此SVN具有大部分CVS擁有的特性。

不僅僅是文件受控兼贸,目錄也加入版本控制段直。

復(fù)制,刪除溶诞,重命名這些操作都是受控的鸯檬。

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

提交事務(wù)原子性螺垢。提交完成之前任何一個(gè)部分都不會(huì)正真生效喧务。版本號基于提交赖歌,而不是基于文件。提交時(shí)的log message也是依附于提交的那個(gè)版本功茴。

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

合并跟蹤坎穿。在合并時(shí)協(xié)助你處理所有的更改點(diǎn)展父。

文件鎖定。svn支持文件鎖定修改策略玲昧。

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

可選的Apache network server孵延,基于WEBDAV/DeltaV 協(xié)議吕漂。熟悉Apache的管理員會(huì)很喜歡這一點(diǎn)。

內(nèi)置的server選擇(svnserve)尘应。如果不想用Apache痰娱,可以試試Svn自己的server:svnserve。同樣也能提供授權(quán)和驗(yàn)證菩收,ssh通道等功能。

方便解析的輸出鲸睛。svn的輸出盡量做到方便閱讀和方便機(jī)器解析娜饵。

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

svn提供一個(gè)實(shí)用工具箱舞,svnsync來實(shí)現(xiàn)從主庫到只讀附屬庫的同步。

持續(xù)寫入代理功能讓只讀的附屬庫專門處理所有的讀請求拳亿。所有的寫請求交給主庫處理晴股。這個(gè)功能只在使用Apache WebDAV server的時(shí)候才有效。

基于本地化的客戶機(jī)服務(wù)器體系肺魁,分層的庫电湘,明晰的API方便擴(kuò)展。

高效處理二進(jìn)制文件鹅经。

性能消耗與更改點(diǎn)的數(shù)量成正比寂呛。

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

ChangeLists功能贷痪。

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

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

這篇文章主要介紹的是svn客戶端的命令蹦误,你至少需要安裝客戶端劫拢。默認(rèn)就是以SVN做版本控制的肉津。如果你不想在自己機(jī)器上安裝服務(wù)版,google code是個(gè)練習(xí)svn命令的好地方舱沧。

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

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

svn add [path]

別名:無

描述:添加文件或目錄到你的wc初烘,打上新增標(biāo)記。這些文件會(huì)在下一次你提交wc的時(shí)候提交到svn服務(wù)器分俯。

在提交前肾筐,你也可以用svn revert撤銷新增的文件。

訪問庫:否

eg: svn add file.cpp

svn blame Target[@REV]

別名:praise,annotate,ann

描述:顯示某個(gè)已受控文件的每一行的最后修改版本和作者

訪問庫:是

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等三個(gè)文件加入名叫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的項(xiàng)目

svn cleanup [PATH...]

別名:無

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

訪問庫:否

eg:svn cleanup

svn commit [PATH...]

別名:ci

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

訪問庫:是

eg:svn commit -m "added howto section." ##默認(rèn)情況下提交必須提供log message

svn copy SRC[@REV]... DST

別名:cp

描述:copy操作可以從WC到WC奋渔;WC到URL镊逝;URL到WC;URL到URL〖稻ǎ現(xiàn)在SVN只支持同一個(gè)倉庫內(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的操作隱含了提交動(dòng)作座菠,所以需要提供log messages。

svn delete PATH...

別名:del藤树,remove浴滴,rm

描述:刪除

訪問庫:如果PATH是庫地址時(shí)會(huì),刪除WC內(nèi)的文件不會(huì)岁钓。

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

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

svn diff

別名:di

描述:用來比較并顯示修改點(diǎn)屡限。

訪問庫:

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

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

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)出一個(gè)干凈的目錄樹,不包含所有的受控信息拓型《詈伲可以選擇從URL或WC中導(dǎo)出瘸恼。

訪問庫:如果訪問的是URL則會(huì)。

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

svn help — Help!

別名:?,h

描述:不用解釋了

訪問庫:否东帅。

svn import [PATH] URL

別名:無

描述:導(dǎo)入本地一個(gè)目錄到庫中。但是導(dǎo)入后球拦,本地的目錄并不會(huì)處于受控狀態(tài)靠闭。

訪問庫:是。

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

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

別名:無

描述:顯示指定WC和URL信息坎炼。

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

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

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

別名:ls

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

訪問庫:如果訪問的是庫地址就會(huì)檩淋。

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

svn lock TARGET...

別名:無

描述:對目標(biāo)獲得修改鎖萄金。如果目標(biāo)已被其他用戶鎖定蟀悦,則會(huì)拋出警告信息。用--force參數(shù)強(qiáng)制從其他用戶那里獲得鎖氧敢。

訪問庫:是

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 ? ##詳細(xì)顯示指定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]]

別名:無

描述:合并兩個(gè)受控源的不同之處的圆,存放到一個(gè)WC里。

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

eg:svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-branch ?##合并分支上的改變項(xiàng)到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)訪問庫地址時(shí)梅掠。

eg:svn mkdir newdir

svn move SRC... DST

別名:mv, rename, ren

描述:等同于svn copy命令跟個(gè)svn delete命令。WC到URL的重命名是不被允許的店归。

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

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

svn propdel PROPNAME [PATH...]

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

別名:pdel, pd

描述:從受控文件消痛,目錄等刪除屬性且叁。第二種是刪除某個(gè)指定版本上的附加屬性。

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

eg:svn propdel svn:mime-type someFile ? ?##從someFile上移除svn:mime-type這個(gè)屬性逞带。

svn propedit PROPNAME TARGET...

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

別名:pedit, pe

描述:編輯屬性

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

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)訪問庫地址時(shí)。

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)訪問庫地址時(shí)未妹。

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)訪問庫地址時(shí)空入。

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補(bǔ)上log message

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

##在本地忽略掉.classpath文件

svn resolve PATH...

別名:無

描述:將沖突的文件標(biāo)記為已解決络它,并且刪掉沖突產(chǎn)生的臨時(shí)文件。注意這個(gè)命令并不是能把沖突解決执庐,解決沖突還是得靠人工酪耕。

訪問庫:否

eg:svn resolve --accept mine-full foo.c ? ##1.5版本后,加上--accept參數(shù)轨淌,嘗試自動(dòng)處理沖突迂烁。

svn resolved PATH...

別名:無

描述:已過時(shí),被resolve --accept取代递鹉。去除沖突的狀態(tài)和沖突臨時(shí)文件盟步。

訪問庫:否

svn revert PATH...

別名:無

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

訪問庫:否

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

svn status [PATH...]

別名:stat, st

描述:輸出WC中文件和目錄的狀態(tài)躏结。如果WC提交却盘,這些狀態(tài)就會(huì)同步到庫里。

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

'A' ?新增

'D' ?刪除

'M' ?修改

'R'??替代

'C' ?沖突

'I' ?忽略

'?' ?未受控

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

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

eg:svn status wc

svn switch URL[@PEGREV] [PATH]

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

別名:sw

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

訪問庫:是

eg:svn sw http://svn.myProject.com/repos/trunk/vendors . ?##將當(dāng)前WC切換到另一個(gè)URL

svn unlock TARGET...

別名:無

描述:解鎖

訪問庫:是

eg:svn unlock somefile

svn update [PATH...]

別名:up

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

A ?新增

B ?鎖破壞

D ?刪除

U ?更新

C ?沖突

G ?合并

E ?存在的

訪問庫:是

eg:svn up -r22 ? ##更新到一個(gè)指定版本

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屈溉,一起剝皮案震驚了整個(gè)濱河市塞关,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌子巾,老刑警劉巖帆赢,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異线梗,居然都是意外死亡椰于,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門仪搔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘾婿,“玉大人,你說我怎么就攤上這事”锼” “怎么了孩饼?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長竹挡。 經(jīng)常有香客問我镀娶,道長,這世上最難降的妖魔是什么揪罕? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任梯码,我火速辦了婚禮,結(jié)果婚禮上好啰,老公的妹妹穿的比我還像新娘轩娶。我一直安慰自己,他們只是感情好框往,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布鳄抒。 她就那樣靜靜地躺著,像睡著了一般椰弊。 火紅的嫁衣襯著肌膚如雪许溅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天秉版,我揣著相機(jī)與錄音贤重,去河邊找鬼。 笑死清焕,一個(gè)胖子當(dāng)著我的面吹牛并蝗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秸妥,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼滚停,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粥惧?” 一聲冷哼從身側(cè)響起键畴,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎影晓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體檩禾,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挂签,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盼产。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饵婆。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖戏售,靈堂內(nèi)的尸體忽然破棺而出侨核,到底是詐尸還是另有隱情草穆,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布搓译,位于F島的核電站悲柱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏些己。R本人自食惡果不足惜豌鸡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望段标。 院中可真熱鬧涯冠,春花似錦、人聲如沸逼庞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赛糟。三九已至派任,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虑灰,已是汗流浹背吨瞎。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留穆咐,地道東北人颤诀。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像对湃,于是被迫代替她去往敵國和親崖叫。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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

  • WC:Working Copy 你的工作區(qū) Versioned:受控的拍柒;受版本控制的 SVN是什么心傀? SVN是開源...
    Programmer客棧閱讀 685評論 0 4
  • TortoiseSVN is an easy-to-use SCM / source control softwa...
    旅行家John閱讀 2,810評論 0 2
  • 一. SVN和Git區(qū)別 SVN : 集中式的版本控制工具Git : 分布式的版本控制工具 二. SVN介紹 SV...
    奮斗的蝸牛閱讀 3,062評論 0 1
  • 前言: 1.本文講的是SVN版本控制工具常用功能,包括命令行和界面化操作2.如果想了解GIT使用方式拆讯,請移步這里 ...
    珍此良辰閱讀 17,521評論 10 57
  • 為什么會(huì)出現(xiàn)源代碼管理工具脂男? 為了解決在軟件開發(fā)過程中,由源代碼引發(fā)的各種蛋疼种呐、繁瑣的問題 源代碼會(huì)引發(fā)哪些問題宰翅?...
    iOS小蟲下米閱讀 2,017評論 0 5