svn的使用

引言

為什么使用SVN姥闪?在企業(yè)工作時(shí)始苇,經(jīng)常需要團(tuán)隊(duì)配合,這時(shí)一份工程需要多個(gè)人共
同維護(hù)筐喳,業(yè)內(nèi)稱之為多人聯(lián)編催式。聯(lián)編的方式有很多種函喉,最原始的方式就是A寫完代
碼a,B寫完代碼b....M寫完代碼m,然后由N負(fù)責(zé)把a(bǔ)到m的所有代碼進(jìn)行整合荣月,而
且N需要和所有人溝通管呵,對(duì)所有代碼都很清晰,整合時(shí)不能夠出現(xiàn)差錯(cuò)哺窄,否則代碼
就有可能達(dá)不到預(yù)期效果捐下。很顯然這個(gè)工作是非常繁重而且效率非常低的。作為地
球上最智慧的一群人萌业,我們?cè)趺茨苋萑踢@種低效率的工作呢坷襟。所以誕生了很多聯(lián)編
工具,幫助我們自己解決各種問題生年。其中應(yīng)用最廣泛的莫過于SVN了婴程,當(dāng)然目前git
以其先進(jìn)敏捷的特點(diǎn),得到越來越多人的認(rèn)可和使用抱婉,著名程序猿交友網(wǎng)站
Github就是提供git服務(wù)的網(wǎng)站档叔。git和SVN的區(qū)別

定義

百度百科給出SVN的定義:

SVN是Subversion的簡(jiǎn)稱,是一個(gè)開放源代碼的版本控制系統(tǒng)授段,相較于RCS蹲蒲、CVS,它采用了分支管理系統(tǒng)侵贵,它的設(shè)計(jì)目標(biāo)就是取代CVS届搁。互聯(lián)網(wǎng)上很多版本控制服務(wù)已從CVS遷移到Subversion窍育。說得簡(jiǎn)單一點(diǎn)SVN就是用于多個(gè)人共同開發(fā)同一個(gè)項(xiàng)目卡睦,共用資源的目的。

搭建SVN服務(wù)器

服務(wù)器的作用就如同引言中所說的工程師N的作用漱抓,負(fù)責(zé)整合代碼表锻,并且還能記錄版本信息。
服務(wù)器的搭建過程非常簡(jiǎn)單乞娄,我們以Windows為例瞬逊,使用基于Apache構(gòu)建的VisualSVN,可以
快速簡(jiǎn)單地搭建出SVN服務(wù)器仪或。

  • windows 環(huán)境請(qǐng)參考:使用VisualSVN Server搭建服務(wù)器
    任何一臺(tái)連接在局域網(wǎng)中的windows電腦都可以變成SVN服務(wù)器确镊,如果把SVN托管到公網(wǎng)中,
    那么在世界任何角落你都可以開心的提交你的代碼了范删,常見于跨國(guó)蕾域、跨地區(qū)合作。
  • Mac 環(huán)境請(qǐng)參考:Mac環(huán)境下svn的使用

使用SVN

在Mac OS X中到旦,使用SVN可以使用命令行工具旨巷,也可以使用各種軟件巨缘。我們先從命令行講起,介紹幾個(gè)簡(jiǎn)單的SVN命令采呐。

SVN基本命令:

1. 啟動(dòng)svn服務(wù)器

svnserve -d -r /Users/apple/svn
或者輸入:svnserve -d -r /Users/apple/svn/mycode

2. 結(jié)束服務(wù)

killall -9 svnserve

3. CheckOut:將文件checkout到本地目錄

svn checkout path(path是服務(wù)器上的目錄)
例如:svn checkout svn://192.168.1.1/pro/domain
簡(jiǎn)寫:svn co

4. Add:往版本庫中添加新的文件

svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加當(dāng)前..目錄下所有的php.文件)

5. Commit:將改動(dòng)的文件提交到版本庫

svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果選擇了保持鎖若锁,就
使?用–no-unlock開關(guān))
例如:svn commit -m “add test file for my test“ test.php
簡(jiǎn)寫:svn ci
日常提交更改過的代碼到服務(wù)器:
1. 打開終端,先定位到/Users/apple/Documents/code目錄懈万,輸入:
cd /Users/apple/Documents/code
2. 輸入提交指令:svn commit -m "修改日志說明"

6. Lock:unLock:加鎖/解鎖

svn lock -m "LockMessage" [--force] PATH
例如:svn lock -m "lock test file" test.php
svn unlock PATH

7. Update:更新到某個(gè)版本

svn update -r m path
例如:
svn update 如果后面沒有目錄拴清,默認(rèn)將當(dāng)前目錄以及子目錄下的所有文件都更新到最新版本靶病。
svn update -r 200 test.php(將版本庫中的.文件test.php還原到版本200)
svn update test.php(更新会通,于版本庫同步。如果在提交的時(shí)候提示過期的話娄周,是因?yàn)闆_突涕侈,需要先update,修改文件煤辨,然后清除svn resolved裳涛,最后再提交commit)
簡(jiǎn)寫:svn up
日常更新服務(wù)器端的代碼到客戶端
1.  打開終端,先定位到/Users/apple/Documents/code目錄众辨,輸入:
cd /Users/apple/Documents/code
2.  輸入指令:svn update

8. Status:查看文件或者目錄狀態(tài)

1. svn status path(目錄下的文件和子目錄的狀態(tài)端三,正常狀態(tài)不顯示)
【?:不在svn的控制中;M:內(nèi)容被修改鹃彻;C:發(fā)生沖突郊闯;A:預(yù)定加入到版本庫;K:被鎖定】
2. svn status -v path(顯示文件和子目錄狀態(tài))
第一列保持相同蛛株,第二列顯示工作版本號(hào)团赁,第三和第四列顯示最后一次修改的版本號(hào)和修改人。
注:svn status谨履、svn diff和 svn revert這三條命令在沒有網(wǎng)絡(luò)的情況下也可以執(zhí)行的欢摄,原因是svn在本地的.svn中保留了本地版本的原始拷貝。
簡(jiǎn)寫:svn st

9. Delete:刪除文件

svn delete path -m "delete test file"
例如:
svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file"
或者直接svn delete test.php 然后再svn ci -m "delete test file" 推薦使用這種
簡(jiǎn)寫:svn (del, remove, rm)

10. Log: 查看日志

svn log path
例如:svn log test.php 顯示這個(gè)文件的所有修改記錄笋粟,及其版本號(hào)的變化

提示:此處如果報(bào)錯(cuò)Item is not readable怀挠,則需要在
svnserve.conf 文件中,設(shè)置 anon-access = none。

11. Info:查看文件詳細(xì)信息

svn info path
例如:svn info test.php

12. Diff:比較差異

svn diff path(將修改的文件與基礎(chǔ)版本比較)
例如:svn diff test.php
svn diff -r m:n path (對(duì)版本m和版本n比較差異)
例如:svn diff -r 200:201 test.php
簡(jiǎn)寫:svn di

SVN圖形界面工具軟件

SVN圖形界面工具軟件有很多害捕,在Mac環(huán)境下可以使用Versions绿淋、Cornerstone等等,這里我們只介紹一下Cornerstone的使用吨艇。

  1. Checkout
  2. Add
  3. Delete
  4. Revert
  5. Commit
  6. Update Update的重點(diǎn)在于如何解決沖突

遇到的問題

  • Xcode 8.1 上使用 source control —> commit時(shí)報(bào)錯(cuò):
    The working copy “XXX” failed to commit files.Couldn’t communicate with a helper application.
    解決方法::這里的提示可能只是svn幫助工具的一般處理躬它,真正原因提示的并不是很明確,可以打開終端(command-line tool)使用命令行查看具體原因东涡,然后再具體解決冯吓。代碼如下:
$ cd [path]     //cd到項(xiàng)目根目錄里
$ svn commit -m "這里寫提交日志說明"

如果沒問題的話會(huì)顯示上傳信息倘待,有問題的話會(huì)輸出錯(cuò)誤原因,我這里提示的是:

svn: E155010: Commit failed (details follow):
svn: E155010: '/Users/apple/Desktop//APP/Demo/Demo/Assets.xcassets/Others/appicon.imageset/appicon.png' is scheduled for addition, but is missing

大概意思是之前在Assets.xcassets里計(jì)劃增加的圖片消失產(chǎn)生了錯(cuò)誤组贺,我找到了名稱為:appicon 的Image Set凸舵,鍵盤Del刪除之后再重新添加,再去commit就可以提交了失尖。

總結(jié)::日常最好是通過Xcode添加和刪除文件啊奄,以便正確更新svn狀態(tài)(使用Finder操作文件可能會(huì)導(dǎo)致svn沒法更新)。 如果發(fā)生提交錯(cuò)誤掀潮,請(qǐng)轉(zhuǎn)到命令行并使用svn status獲取提示菇夸,出現(xiàn)錯(cuò)誤,并從命令行進(jìn)行修復(fù)仪吧。

# On OSX using sourcetree / git-svn getting “Can't locate SVN/Core.pm in @INC ”

解決方法庄新,實(shí)測(cè)有效:

sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/SVN /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/SVN
sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/auto/SVN

參考文獻(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市薯鼠,隨后出現(xiàn)的幾起案子择诈,更是在濱河造成了極大的恐慌,老刑警劉巖出皇,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羞芍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡郊艘,警方通過查閱死者的電腦和手機(jī)荷科,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暇仲,“玉大人步做,你說我怎么就攤上這事∧胃剑” “怎么了全度?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)斥滤。 經(jīng)常有香客問我将鸵,道長(zhǎng),這世上最難降的妖魔是什么佑颇? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任顶掉,我火速辦了婚禮,結(jié)果婚禮上挑胸,老公的妹妹穿的比我還像新娘痒筒。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布簿透。 她就那樣靜靜地躺著移袍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪老充。 梳的紋絲不亂的頭發(fā)上葡盗,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音啡浊,去河邊找鬼觅够。 笑死,一個(gè)胖子當(dāng)著我的面吹牛巷嚣,可吹牛的內(nèi)容都是我干的喘先。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涂籽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼苹祟!你這毒婦竟也來了砸抛?” 一聲冷哼從身側(cè)響起评雌,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎直焙,沒想到半個(gè)月后景东,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奔誓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年斤吐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厨喂。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡和措,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜕煌,到底是詐尸還是另有隱情派阱,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布斜纪,位于F島的核電站贫母,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盒刚。R本人自食惡果不足惜腺劣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望因块。 院中可真熱鬧橘原,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歼冰,卻和暖如春靡狞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隔嫡。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工甸怕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腮恩。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓梢杭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親秸滴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子武契,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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