iOS之SVN

PS:1.文中所有的截圖都是以老版的cornerStone為參考,新版樣式有出入?咦!

PS:2.本文所有$符號(hào)之后為在終端中執(zhí)行的命令。

PS:3.基本都是總結(jié)他人的資料最岗,自己整合修改的。感謝原作者(不知道是誰(shuí))般渡!

版本控制系統(tǒng)

版本控制

版本控制(Version Control)的作用是追蹤文件的變化驯用。為什么需要版本控制蝴乔?簡(jiǎn)單說(shuō)薇正,就是當(dāng)你出錯(cuò)了挖腰,可以很容易地回到?jīng)]出錯(cuò)時(shí)的狀態(tài)。
你可能已經(jīng)在不知不覺(jué)中猴仑,布置了自己的版本控制系統(tǒng)辽俗。比如崖飘,創(chuàng)建了類似下面這樣的文件名:

論文_0510.doc
論文0514.doc
論文0521.doc
論文
修改版.doc
論文
最終不修改版.doc

這就是軟件中為什么有"Save As"命令的原因坐漏。它使得你可以在不破壞源文件的基礎(chǔ)上薄疚,得到一個(gè)類似的新文件。文件的多版本保存是一個(gè)常見(jiàn)問(wèn)題赊琳,通常的解決辦法是這樣的:

  • 做一個(gè)文件備份(比如Document.old.txt)街夭。
  • 在文件名中加入版本號(hào)或日期(比如Document_V1.txt,DocumentMarch2007.txt)躏筏。
  • 在多人編輯的環(huán)境下板丽,共享一個(gè)文件目錄,并且要求每個(gè)人編輯完以后,在文件上做出標(biāo)識(shí)埃碱。

什么是版本控制系統(tǒng)(VCS)猖辫?

大型的、頻繁修改的砚殿、多人編寫(xiě)的軟件項(xiàng)目啃憎,需要一個(gè)版本控制系統(tǒng)(簡(jiǎn)稱VCS,行話叫做"文件數(shù)據(jù)庫(kù)"),追蹤文件的變化辉阶,避免出現(xiàn)混亂。
一次典型的使用過(guò)程是這樣的:
愛(ài)麗絲add一個(gè)文件(list.txt)進(jìn)入repo店印。然后,她又把這個(gè)文件check out炫贤,做了一次編輯(在文件中加入milk這個(gè)單詞)兰珍。接著,她將修改后的文件check in唠摹,并附有一條checking message("加入了新的條目")。第二天早上成肘,鮑勃update了他本地的working set,看到了list.txt的最新修訂版蟹演,其中包含了單詞"milk"骡技。如果他使用changelog或diff,都可以發(fā)現(xiàn)前一天愛(ài)麗絲加入"milk"這個(gè)詞是趴。
網(wǎng)上有許多VCS軟件可供選擇掸驱,并且都有詳細(xì)的教程或手冊(cè)温赔,比如SVN陶贼、CVS、RCS、Git足画、Perforce等等。

版本庫(kù)

版本庫(kù)又名倉(cāng)庫(kù),英文名repository央星,你可以簡(jiǎn)單理解成一個(gè)目錄廉沮,這個(gè)目錄里面的所有文件都可以被版本控制系統(tǒng)管理起來(lái)叁幢,每個(gè)文件的修改刽漂、刪除样悟,都能跟蹤蔼水,以便任何時(shí)刻都可以追蹤歷史吊说,或者在將來(lái)某個(gè)時(shí)刻可以“還原”厅贪。

SVN

在Mac環(huán)境下眉抬,由于Mac自帶了SVN的服務(wù)器端和客戶端功能悄谐,所以我們可以在不裝任何第三方軟件的前提下使用SVN功能威沫,不過(guò)還需做一下簡(jiǎn)單的配置孵构。

為什么使用SVN

進(jìn)行權(quán)限管理雾袱,針對(duì)不同的人毒坛,開(kāi)放不同的權(quán)限豪直。比如Alex是進(jìn)行A項(xiàng)目的珠移,Bob進(jìn)行B項(xiàng)目的,那么SVN可以有效的管理每個(gè)人看到的項(xiàng)目暇韧,Alex不可能獲得Bob的項(xiàng)目酪刀,同樣Bob也不可能獲得Alex的項(xiàng)目骂倘。

對(duì)于代碼進(jìn)行追蹤历涝,代碼不會(huì)遺失场刑。不如今天代碼修改亂了,需要恢復(fù)到某一天的邀桑,那么我們只需要選擇一下恢復(fù)的日期即可進(jìn)行恢復(fù)壁畸。

搭建SVN服務(wù)器

1. 創(chuàng)建代碼倉(cāng)庫(kù)照弥,存儲(chǔ)客戶端上傳的代碼

先在~/Desktop目錄(這個(gè)目錄可以是任意非中文路徑)新建一個(gè)svn目錄,以后可以在svn目錄下創(chuàng)建多個(gè)倉(cāng)庫(kù)目錄。
打開(kāi)終端空免,切換到該目錄cd ~/Desktop/svn氮昧,創(chuàng)建一個(gè)learnsvn倉(cāng)庫(kù)框杜,輸入命令:svnadmin create ./learnsvn,執(zhí)行成功后袖肥,會(huì)發(fā)現(xiàn)在該目錄下多了一個(gè)LimitFree目錄咪辱。

2. 配置SVN的用戶權(quán)限

主要是修改./learnsvn/conf目錄下的三個(gè)文件
打開(kāi)svnserve.conf,將下列配置項(xiàng)前面的#和空格都去掉

#anon-access = read 
#auth-access = write 
#password-db = passwd
#authz-db = authz

anon-access = read代表匿名訪問(wèn)的時(shí)候是只讀的椎组,若改為anon-access = none代表禁止匿名訪問(wèn)油狂,需要帳號(hào)密碼才能訪問(wèn)

打開(kāi)passwd,在[users]下面添加帳號(hào)和密碼

[users]

# harry = harryssecret
# sally = sallyssecret
wj = 123
student = 123456

帳號(hào)是wj寸癌,密碼是123

打開(kāi)authz专筷,配置用戶組和權(quán)限
我們可以將在passwd里添加的用戶分配到不同的用戶組里,以后的話蒸苇,就可以對(duì)不同用戶組設(shè)置不同的權(quán)限磷蛹,沒(méi)有必要對(duì)每個(gè)用戶進(jìn)行單獨(dú)設(shè)置權(quán)限。
在[groups]下面添加組名和用戶名溪烤,多個(gè)用戶之間用逗號(hào)(,)隔開(kāi)

[groups] 

topgroup=wj,student

說(shuō)明wj和student都是屬于topgroup這個(gè)組的味咳,接下來(lái)再進(jìn)行權(quán)限配置庇勃。
使用[/]代表svn服務(wù)器中的所有資源庫(kù)

[/] 

@topgroup = rw

上面的配置說(shuō)明topgroup這個(gè)組中的所有用戶對(duì)所有資源庫(kù)都有讀寫(xiě)(rw)權(quán)限,組名前面要用@
如果是用戶名槽驶,不用加@责嚷,比如wj這個(gè)用戶有讀寫(xiě)權(quán)限

[/] 

wj = rw

3. 啟動(dòng)SVN服務(wù)器

在終端輸入命令:svnserve -d -r ~/Desktop/svnsvnserve -d -r ~/Desktop/svn/learnsvn

沒(méi)有任何提示就說(shuō)明啟動(dòng)成功了

4. 關(guān)閉SVN服務(wù)器

打開(kāi)活動(dòng)監(jiān)視器,輸入svnserve掂铐,強(qiáng)制退出進(jìn)程罕拂。

使用SVN客戶端功能

SVN客戶端有兩種使用方式,命令行和GUI界面軟件(CornerStone)
命令行工具

usage: svn <subcommand> [options] [args]

Subversion command-line client.
Type 'svn help <subcommand>' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules
 or 'svn --version --quiet' to see just the version number.
?
Most subcommands take file and/or directory arguments, recursing
on the directories. If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.
?
Available subcommands:
   add
   auth
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mergeinfo
   mkdir
   move (mv, rename, ren)
   patch
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   relocate
   resolve
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)
   upgrade
?
Subversion is a tool for version control.
For additional information, see http://subversion.apache.org/

CornerStone

添加代碼倉(cāng)庫(kù)

添加代碼倉(cāng)庫(kù)

填寫(xiě)SVN倉(cāng)庫(kù)信息

填寫(xiě)SVN倉(cāng)庫(kù)信息

基本操作

checkout(檢出)
add(添加文件)
delete(刪除文件)
modify (修改文件)
commit(提交)
update(更新)
resolve conflict(解決沖突)
revert(恢復(fù)初始狀態(tài))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末全陨,一起剝皮案震驚了整個(gè)濱河市聂受,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烤镐,老刑警劉巖蛋济,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炮叶,居然都是意外死亡碗旅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門镜悉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祟辟,“玉大人,你說(shuō)我怎么就攤上這事侣肄【衫В” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵稼锅,是天一觀的道長(zhǎng)吼具。 經(jīng)常有香客問(wèn)我,道長(zhǎng)矩距,這世上最難降的妖魔是什么拗盒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮锥债,結(jié)果婚禮上陡蝇,老公的妹妹穿的比我還像新娘。我一直安慰自己哮肚,他們只是感情好登夫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著允趟,像睡著了一般恼策。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拼窥,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天戏蔑,我揣著相機(jī)與錄音蹋凝,去河邊找鬼。 笑死总棵,一個(gè)胖子當(dāng)著我的面吹牛鳍寂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播情龄,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼迄汛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了骤视?” 一聲冷哼從身側(cè)響起鞍爱,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎专酗,沒(méi)想到半個(gè)月后睹逃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祷肯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年沉填,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佑笋。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翼闹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒋纬,到底是詐尸還是另有隱情猎荠,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布蜀备,位于F島的核電站关摇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏琼掠。R本人自食惡果不足惜拒垃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓷蛙。 院中可真熱鬧,春花似錦戈毒、人聲如沸艰猬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)冠桃。三九已至,卻和暖如春道宅,著一層夾襖步出監(jiān)牢的瞬間食听,已是汗流浹背胸蛛。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留樱报,地道東北人葬项。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像迹蛤,于是被迫代替她去往敵國(guó)和親民珍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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