搭建svn服務(wù)器以及svn常用命令使用方法

前言

開發(fā)這幾年來勇蝙,基本都是用的svn客戶端管理來管理代碼,用過 Versions 和 CornerStone 沫勿,很少用命令行,對svn的命令掌握的也不全味混。我覺得要想在開發(fā)這條路上走的更遠产雹,熟練的用命令行來管理代碼是最基本的技能。用svn命令行管理代碼并不復(fù)雜翁锡,很容易學(xué)習(xí)蔓挖,熟練之后會覺得比圖形化工具還方便,因為只用鍵盤就可以操作馆衔。最主要是還可以提高逼格瘟判。我覺得十分有必要抽一點時間系統(tǒng)的學(xué)習(xí)一下svn的常用命令怨绣。

創(chuàng)建一個本地SVN倉庫

為了方便演示svn命令,又不想用自己公司的服務(wù)器荒适,可以先搭建一個本地svn服務(wù)器梨熙。打開終端輸入命令:

delimss-MacBook-Pro:~ delims$ svnadmin create ~/svnserver/
delimss-MacBook-Pro:~ delims$ 

svnadmin create [PATH] 是在本地創(chuàng)建一個倉庫,此時控制臺沒有任何輸出刀诬,我們看看這個目標(biāo)下生成的文件

delimss-MacBook-Pro:~ delims$ cd ~/svnserver/
delimss-MacBook-Pro:svnserver delims$ ls
README.txt  db      hooks
conf        format      locks

可以看到生成了一堆文件和文件夾,conf文件夾里包含了倉庫的配置信息

看下里面有什么

delimss-MacBook-Pro:svnserver delims$ cd conf/
delimss-MacBook-Pro:conf delims$ ls
authz       hooks-env.tmpl  passwd      svnserve.conf

可以看到conf文件夾里包含了4個文件

文件 說明
svnserve.conf 守護進程配置文件
authz 保存了用戶名和權(quán)限
passwd 保存了用戶名的密碼
hooks-env.tmpl 鉤子腳本環(huán)境配置文件

這幾個配置文件邪财,有用的代碼都是被注釋掉的陕壹,我們需要手動修改一下,主要是刪除注釋符號#树埠,其次也會適當(dāng)做些修改糠馆,修改如下:

svnserve.conf

修改前 修改后 說明
[general]
# anon-access = read
# auth-access = write
# password-db = passwd
# authz-db = authz
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
anon-access 代表匿名訪問權(quán)限
賦值給none表示不允許匿名訪問
注意:#后面有一個空格也要刪除

authz

修改前 修改后 說明
[groups]
# harry_and_sally = harry,sally
# [/foo/bar]
# harry = rw
# * = r
[groups]
harry_and_sally = harry,sally
[/]
&harry_and_sally = rw
* = r
修改這三行,即創(chuàng)建兩個用戶并組成
一個group怎憋,并給予此group所有成員
根目錄的讀寫權(quán)限

passwd

修改前 修改后 說明
[users]
# harry = harryssecret
# sally = sallyssecret
[users]
harry = 123
sally = 123
設(shè)置用戶密碼又碌,只是用來演示,
我們就設(shè)置一個簡單的吧

啟動本地svn服務(wù)器

配置好以后绊袋,我們就啟動服務(wù)器毕匀,鍵入命令:

delimss-MacBook-Pro:conf delims$ svnserve -d -r ~/svnserver/
delimss-MacBook-Pro:conf delims$ ps -e | grep svn
  974 ??         0:00.00 /Applications/Xcode.app/Contents/Developer/usr/bin/svnserve -d -r /Users/delims/svnserver/
  977 ttys000    0:00.00 grep svn

此時可以看到成功開啟了svnserve進程,還可以發(fā)現(xiàn)svnserve工具是包含在Xcode中的癌别,不得不感嘆皂岔,Xcode真是一個百寶囊。

我們隨便找個目錄把我們本地svn服務(wù)器上的倉庫拉下來

delimss-MacBook-Pro:temp delims$ svn co svn://localhost
Authentication realm: <svn://localhost:3690> 7a441335-b969-42c4-aa80-56391f894982
Password for 'delims': *****  //輸入macOS用戶密碼

Authentication realm: <svn://localhost:3690> 7a441335-b969-42c4-aa80-56391f894982
Username: harry  //剛才配置的用戶名harry
Password for 'harry': ***  //輸入我們配置的簡單密碼123

Checked out revision 0.  //成功檢出展姐,版本號為 0

可以看到成功檢出了我們本地服務(wù)器的倉庫并放在了本地躁垛。。圾笨。

svn命令行操作

我們先來添加一個文件并提交到服務(wù)器

delimss-MacBook-Pro:temp delims$ echo 1 > 1.txt  //添加一個文件
delimss-MacBook-Pro:temp delims$ ls
1.txt  //文件添加了
delimss-MacBook-Pro:temp delims$ svn st 
?       1.txt  //可以看到此文件的狀態(tài)是教馆?,也就是還沒有加入到版本控制
delimss-MacBook-Pro:temp delims$ svn add 1.txt //加入到版本控制
A         1.txt //狀態(tài)變?yōu)锳擂达,表示已經(jīng)加入到了版本控制

//提交到服務(wù)器土铺,并添加注釋
delimss-MacBook-Pro:temp delims$ svn ci 1.txt -m "提交第一個文件" 
Adding         1.txt  
Transmitting file data .done
Committing transaction...
Committed revision 1. //已成功上傳到服務(wù)器,版本號+1

為了更好的演示谍婉,我將AFNetworking的源碼放到根目錄

delimss-MacBook-Pro:temp delims$ ls
1.txt       AFNetworking
delimss-MacBook-Pro:temp delims$ svn st
?       AFNetworking  //可以看到AFNetworking還沒有加入版本控制
delimss-MacBook-Pro:temp delims$ svn add AFNetworking/ \\添加上
這句命令執(zhí)行完會顯示有大量的被添加記錄舒憾,下面提交到服務(wù)器
delimss-MacBook-Pro:temp delims$ svn ci AFNetworking -m "添加AFNetworking"
這句命令執(zhí)行完后,最后面會顯示穗熬,說明一已經(jīng)成功上傳到服務(wù)器镀迂,版本號是2
Transmitting file data ..................................................................................................................................................................................................................................done
Committing transaction...
Committed revision 2.

delimss-MacBook-Pro:temp delims$ svn st  //查看狀態(tài),沒有任何輸出唤蔗,表示當(dāng)前沒有文件變動
delimss-MacBook-Pro:temp delims$ svn info //查看當(dāng)前svn信息探遵,發(fā)現(xiàn)版本號依然是0
Path: .
Working Copy Root Path: /Users/delims/temp
URL: svn://localhost
Relative URL: ^/
Repository Root: svn://localhost
Repository UUID: 7a441335-b969-42c4-aa80-56391f894982
Revision: 0
Node Kind: directory
Schedule: normal
Last Changed Rev: 0
Last Changed Date: 2018-08-17 09:59:13 +0800 (Fri, 17 Aug 2018)

更新一下代碼

delimss-MacBook-Pro:temp delims$ svn update  //更新一下svn
Updating '.':
At revision 2.
delimss-MacBook-Pro:temp delims$ svn info
Path: .
Working Copy Root Path: /Users/delims/temp
URL: svn://localhost
Relative URL: ^/
Repository Root: svn://localhost
Repository UUID: 7a441335-b969-42c4-aa80-56391f894982
Revision: 2
Node Kind: directory
Schedule: normal
Last Changed Author: harry
Last Changed Rev: 2
Last Changed Date: 2018-08-17 12:55:56 +0800 (Fri, 17 Aug 2018)

查看一下svn 提交記錄

delimss-MacBook-Pro:temp delims$ svn log
------------------------------------------------------------------------
r2 | harry | 2018-08-17 12:55:56 +0800 (Fri, 17 Aug 2018) | 1 line

添加AFNetworking
------------------------------------------------------------------------
r1 | harry | 2018-08-17 11:44:12 +0800 (Fri, 17 Aug 2018) | 1 line

提交第一個文件
------------------------------------------------------------------------

PS: 這個命令是查看當(dāng)前倉庫所有文件的所有提交記錄窟赏,如果只是查看某個文件的記錄就這樣

delimss-MacBook-Pro:temp delims$ svn log 1.txt 
------------------------------------------------------------------------
r1 | harry | 2018-08-17 11:44:12 +0800 (Fri, 17 Aug 2018) | 1 line

提交第一個文件
------------------------------------------------------------------------

如果只查看最近的幾條記錄就這樣

delimss-MacBook-Pro:temp delims$ svn log -l 1  //查看最近的1條記錄
------------------------------------------------------------------------
r2 | harry | 2018-08-17 12:55:56 +0800 (Fri, 17 Aug 2018) | 1 line

添加AFNetworking
------------------------------------------------------------------------

當(dāng)前版本是2,如果我要回到版本1.就這樣

delimss-MacBook-Pro:temp delims$ svn update -r 1 //指定版本號
Updating '.':
D    AFNetworking
Updated to revision 1.
delimss-MacBook-Pro:temp delims$ ls
1.txt  //已經(jīng)回到版本1

瀏覽服務(wù)器上的文件可以這樣操作

delimss-MacBook-Pro:temp delims$ svn list svn://localhost
1.txt
AFNetworking/
delimss-MacBook-Pro:temp delims$ svn list svn://localhost/AFNetworking
.cocoadocs.yml
.git/
.gitignore
.travis.yml
AFNetworking/
AFNetworking.podspec
AFNetworking.xcodeproj/
AFNetworking.xcworkspace/
CHANGELOG.md
CONTRIBUTING.md
Example/
Framework/
LICENSE
README.md
Tests/
UIKit+AFNetworking/
fastlane/
delimss-MacBook-Pro:temp delims$ 

創(chuàng)建一個新分支

delimss-MacBook-Pro:temp delims$ svn copy svn://localhost/AFNetworking svn://localhost/AFNetworking2 -m "創(chuàng)建一個新分支"
Committing transaction...
Committed revision 3.  

再來看下服務(wù)器上的目錄

delimss-MacBook-Pro:temp delims$ svn list svn://localhost
1.txt
AFNetworking/
AFNetworking2/

可以看到服務(wù)器上的目錄已經(jīng)被更改了

更新本地箱季,

delimss-MacBook-Pro:temp delims$ svn update
這里會輸出大量日志
delimss-MacBook-Pro:temp delims$ ls 
1.txt       AFNetworking    AFNetworking2

可以看到本地文件和服務(wù)器同步了
修改文件

delimss-MacBook-Pro:temp delims$ svn st
M       AFNetworking/README.md
delimss-MacBook-Pro:temp delims$ svn ci AFNetworking/README.md -m "修改一個文件" 
Sending        AFNetworking/README.md
Transmitting file data .done
Committing transaction...
Committed revision 4.

先介紹這些吧

鍵入svn help查看svn所有命令,打印如下:

   add <br>
   auth <br>
   blame (praise, annotate, ann) <br>
   cat <br>
   changelist (cl) <br>
   checkout (co) <br>
   cleanup <br>
   commit (ci) <br>
   copy (cp) <br>
   delete (del, remove, rm) <br>
   diff (di) <br>
   export <br>
   help (?, h) <br>
   import <br>
   info <br>
   list (ls) <br>
   lock <br>
   log <br>
   merge <br>
   mergeinfo <br>
   mkdir <br>
   move (mv, rename, ren) <br>
   patch <br>
   propdel (pdel, pd) <br>
   propedit (pedit, pe) <br>
   propget (pget, pg) <br>
   proplist (plist, pl) <br>
   propset (pset, ps) <br>
   relocate <br>
   resolve <br>
   resolved <br>
   revert <br>
   status (stat, st) <br>
   switch (sw) <br>
   unlock <br>
   update (up) <br>
   upgrade <br>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涯穷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子藏雏,更是在濱河造成了極大的恐慌拷况,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掘殴,死亡現(xiàn)場離奇詭異赚瘦,居然都是意外死亡,警方通過查閱死者的電腦和手機奏寨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門起意,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人病瞳,你說我怎么就攤上這事揽咕。” “怎么了套菜?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵亲善,是天一觀的道長。 經(jīng)常有香客問我笼踩,道長逗爹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任嚎于,我火速辦了婚禮掘而,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘于购。我一直安慰自己袍睡,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布肋僧。 她就那樣靜靜地躺著斑胜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫌吠。 梳的紋絲不亂的頭發(fā)上止潘,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機與錄音辫诅,去河邊找鬼凭戴。 笑死,一個胖子當(dāng)著我的面吹牛炕矮,可吹牛的內(nèi)容都是我干的么夫。 我是一名探鬼主播者冤,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼档痪!你這毒婦竟也來了涉枫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腐螟,失蹤者是張志新(化名)和其女友劉穎愿汰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遭垛,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡尼桶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锯仪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡趾盐,死狀恐怖庶喜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情救鲤,我是刑警寧澤久窟,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站本缠,受9級特大地震影響斥扛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丹锹,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一稀颁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楣黍,春花似錦匾灶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哩治,卻和暖如春秃踩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背业筏。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工憔杨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驾孔。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓芍秆,卻偏偏與公主長得像惯疙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妖啥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

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

  • iOS 開發(fā) SVN 版本控制器 更多技術(shù)交流請加群 iOS技術(shù)聯(lián)盟 27512466 SVN是Subversio...
    Sunny_Fight閱讀 8,784評論 7 63
  • 1.首先安裝svn客戶端 yum installsubversion 2.測試是否安裝成功 svnserve --...
    架構(gòu)飛毛腿閱讀 782評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理霉颠,服務(wù)發(fā)現(xiàn),斷路器荆虱,智...
    卡卡羅2017閱讀 134,696評論 18 139
  • 一蒿偎、SVN1、什么是svnsvn:全稱Subversion怀读,是代碼版本管理軟件诉位,管理著隨時間改變的數(shù)據(jù)。這些數(shù)據(jù)放...
    peng_js閱讀 3,237評論 0 0
  • 隆隆的雷聲才開始作響菜枷,雨點就從半空砸了下來苍糠,讓人猝不及防。一點一點啤誊,一片一片岳瞭,繼而打濕整個世界,在積水的低洼處接連...
    如柏的日記閱讀 575評論 0 4