? ? ? ? 最近剛?cè)肼殻佑|到公司項目,用的是SVN跛璧,使用cornerstone進行管理。由于之前只接觸過git新啼,并且使用的命令行追城,所以對cornerstone并不熟悉(有點可悲的是iOS組沒有其他前輩可以請教。燥撞。座柱。)。在搜索引擎和項目老大的幫助下物舒,自己也慢慢摸索出了cornerstone的一些使用門道色洞,本文就記錄一下自己學(xué)習(xí)的一些過程,當(dāng)做是自己的一個學(xué)習(xí)筆記吧冠胯,如果有讀者有啥疑問的話能解答的話我也會跟大家解釋的火诸,相互交流學(xué)習(xí)吧。
? ? ? ? 我就不從cornerstone配置項目文件說起啦荠察,那些東西應(yīng)該還是比較簡單的置蜀,只要跟項目負責(zé)人拿到相關(guān)的服務(wù)器地址,用戶賬戶密碼割粮,可以搜索到一堆的教程盾碗。在這里,我主要說下之前我沒接觸過的項目主干分支的代碼合并吧舀瓢,也就是merge操作廷雅。
? ? ? ? ? 首先說下merge中的步驟:1 主動合并的工程必須要先commit到服務(wù)器中; 2 A是主干京髓,B是主干的分支航缀。例如從B中merge到A的操作:選擇cherry pick change(任意選擇,synchronize change為同步到所有分支)堰怨,在revisions中可以選擇all芥玉,merged和unmerged。其中备图,一般我們選擇unmerged灿巧,也就是沒有merged過的赶袄,因為并不是每一次commit的修改都需要merge到其他分支去。比如這次我們選擇這條修改進行merge抠藕,點擊Merge Changes.被merge的項目在本地檢查項目中merge進來的代碼沒有造成沖突或者報錯什么的之后就commit一下饿肺,將代碼提交到服務(wù)器中。 ? ? ? ? ? ?
? ? ? ? 注意點(坑):有些修改跟其他修改可能存在一些依賴關(guān)系盾似,例如第19次修改是在第18次修改的基礎(chǔ)上進行的敬辣,并且第18次的修改沒有進行merge,那么merge的時候零院,如果只revisions了第19次溉跃,就可能會造成問題。一般來說告抄,獨立的功能修改進行merge的話不會造成問題撰茎,因為并沒有和其他修改存在依賴關(guān)系。另外玄妈,commit前要大致瀏覽一下修改的內(nèi)容乾吻,還有如果是顯示有沖突文件的話,最好是手動進行修改拟蜻,因為直接點擊 reslove 的話修復(fù)的很可能是有問題的。
? ? ? ?最后枯饿,為了方便理解酝锅,說下我理解的merge的實現(xiàn)過程吧:服務(wù)器中A主干與B分支在本地上都有一個映射,就是working copies中相對應(yīng)的項目奢方。在A中做了某些修改之后搔扁,commit到遠程倉庫,這樣遠程倉庫就有了A的最新代碼蟋字;A的修改merge到B時稿蹲,其實就是A的遠程倉庫將相關(guān)的修改update到B的本地映射,也就是B的working copies中鹊奖。在檢查完merge后的代碼沒有造成沖突后苛聘,B就將本地的最新代碼commit到遠程倉庫中。這樣的流程下來之后忠聚,A和B的本地與遠程倉庫的代碼都是最新的了设哗。這就是為什么merge前要主動merge的項目必須要commit最新代碼到遠程倉庫中的原因,也正因為如此两蟀,被merge的項目merge后要檢查時候有代碼沖突等問題后才commit到遠程倉庫中网梢。
? ? ? ? 第一次寫博客,知道寫的不好赂毯,所以有錯誤的地方還得請大家多多指教呀战虏,先行謝過啦拣宰。大家一起加油吧!