------------------------------------------------------SVN簡介和搭建 --------------------------------------------------------------- 1.源代碼管理工具的起源: 不進行管理可能存在的問題 無法后悔:做錯了一個操作后,,沒有后悔藥可以吃 如果是團隊開發(fā),,使用源代碼管理工具是強制性的! 由于使用簡單,,不會增加工作量 5.基本操作: 常見操作: svn checkout:將服務器代碼完整的下載到本地 注意: 1.Checkout只需要做一次,! 提醒: 每天下班前:commit“可運行版本” 6.使用環(huán)境: 要想利用SVN管理源代碼,必須得有2套環(huán)境: Visual SVN Server下載地址: 筆者用的安裝包名為VisualSVN-Server-2.7.7.msi,,可以看出該安裝包的后綴名為.msi的格式,,所以該文件必須在windows操作系統(tǒng)上運行。如果你的計算機是Mac的話,,那么還需要安裝一個虛擬機或者使你的Mac擁有雙系統(tǒng),。安裝虛擬機的步驟此處就不在贅述。 1.直接雙擊運行VisualSVN-Server-2.7.7.msi文件: 2.勾選同意,,下一步: 3.如圖操作,,不要問我為什么: 4.選擇標準版: 5.選擇服務器初始化路徑等信息,并指定連接方式為http而非https,,端口號80: 6.點擊安裝: 7.完成: 8.SVN服務器解決面簡介: 9.創(chuàng)建代碼倉庫: 10.指定倉庫的名稱: 11.指定創(chuàng)建的倉庫為最純潔的倉庫: 12.暫時選擇第一項,,不允許任何人訪問: 13.創(chuàng)建用戶: 14.添加用戶,并且指定權限: 15.訪問SVN服務器(需要計算機名稱換成IP地址才可以在其他計算機訪問): 16.本地訪問SVN服務器: -------------------------------------------------項目經(jīng)理初始化項目------------------------------------------------------------- 一般情況下,,一個新的項目的初始化工作都是由項目經(jīng)理完成的,,項目的初始化工作多數(shù)人是不需要做的,。但是考慮到大家都是IT界的精英,一不小心就會成為公司的核心公干或者技術總監(jiān),,所以項目的初始化工作還需要再次介紹一番,。 1.將服務器已有的內(nèi)容下載到本地(比如,在SVN某個項目的倉庫里已經(jīng)創(chuàng)建好的文件夾結構等內(nèi)容需要下載到本地) 1.svn checkout 服務器地址 --username=mgr --password= mgr (把服務器所有的東西都下載下來) // 終端執(zhí)行命令: 之后,,客戶端計算機的文件夾下除了上述兩個文件夾外,,還會有一個.svn文件。.svn是記錄代碼所有的變化的,。 不能夠修改或者刪除.svn文件,,如果刪除,則本地代碼不在svn管理之下,,不能從服務器更新代碼,,也不能上傳代碼。 2.項目經(jīng)理初始化項目 svn add 文件名/項目名 把文件/項目添加到svn管理之下 svn commit -m “注釋” -文件名 例如: svn commit -m"提交文件" main.m 注意:-m是注釋的意思 3.查看文件/項目狀態(tài),。文件是否在svn管理下/文件是否修改了而沒有上傳(命令:svn status) “?”代表:文件沒有被添加到本地版本庫中。 “A”代表:該文件已經(jīng)在svn管理之下,,但是該文件沒有被提交到svn服務器 “m”代表:修改了本地文件,,但是還沒有上傳到svn服務器 所以需要再次commit一次 注意:本地文件每被commit到svn服務器上一次,版本號就會加一,。 swdeMacBook-Pro:test sw$ cd code swdeMacBook-Pro:code sw$ svn status ? 項目經(jīng)理初始化項目 swdeMacBook-Pro:code sw$ 添加到svn管理之下: // 部分截圖: 如何避免多人開發(fā)產(chǎn)生沖突: 每次修改代碼或者提交代碼之前,,先update,然后再commit,。 常用到的兩個命令: svn update和svn commit
---------------------------------------------------cornerstone簡介和使用 -------------------------------------------------- 其實,用命令行進行項目的初始化存在很多弊端,,不能夠忽略一些文件(至少現(xiàn)在我還不會用命令行去忽略文件,即便能忽略的話,,那也會是很麻煩的,,至于為什么要忽略文件,,稍后就會明了),,所以,開發(fā)中幾乎所有的開發(fā)人員都是用圖形化界面工具cornerstone去管理源代碼,。下面就針對于cornerstone的安裝和使用進行講解,。 在Mac上,也可以利用SVN圖形界面工具來管理源代碼,,可以大大減小使用命令行的痛苦(有些操作使用命令行會比較繁瑣,,比如解決沖突) 安裝完cornerstone后,雙擊進入cornerstone圖形化界面: 上圖中“遠程svn服務器倉庫”其實是和svn服務器建立連接后的一個映射,。 接下來,,項目經(jīng)理需要先把服務器完整的目錄下載到本地,然后初始化項目,。 1.連接倉庫: 2.連接成功: 3.點擊“Checkout”,,下載倉庫所有的內(nèi)容(本例中是指下載遠程倉庫的目錄結構): 4.此時,“本地svn目錄”下已經(jīng)有了遠程svn服務器test倉庫的所有內(nèi)容(code文件夾和doc文件夾):
---------------------------------------------------項目經(jīng)理初始化項目 -------------------------------------------------- 1.用Xcode創(chuàng)建一個項目,,把項目添加到code文件夾下: 2.默認項目創(chuàng)建好后,,所有相關文件的狀態(tài)都變?yōu)榱薃(Add),代表已經(jīng)在svn管理之下,,但是未提交到svn服務器,。 cornerstone上的本地目錄(working copies)已經(jīng)有了項目文件: 然而,此時遠程代碼倉庫仍然沒有代碼,,下一步需要commit本地代碼到遠程代碼倉庫,。 cocornerstone界面刷新服務器代碼倉庫快捷鍵:command + r 3.提交本地代碼到遠程倉庫: 方法一:用Xcode commit: 方法二:用cornerstone commit: 一般,初始化項目的時候,,第一次commit項目,,不在Xcode中提交項目,因為,, 除了默認的需要忽略的文件,,還需要手動的忽略一些不需要上傳到svn服務器代碼倉庫共享的文件,Xcode做不到這一點,。cornerstone能夠幫助項目經(jīng)理手動忽略一些文件,,所以,此處我們用cornerstone演示怎么手動忽略不需要上傳的文件,。 cornerstone會自動幫我們識別,,哪些文件不需要提交,,哪些需要提交。
4.添加注釋,,提交初始化項目到服務器(不需要改變勾選項,,cornerstone默認會忽略不需要上傳的文件) 5.查看遠程倉庫是否已經(jīng)有了被commit的項目: 當然,被commit成功的文件,,其在Xcode中的A(Add)標記也會消失: 6.此時,,初始化項目工作還沒有完成,還需要手動忽略一些cornerstone么有幫助我們忽略的文件 需要忽略的文件如下: 7.先delete需要忽略的文件夾: delete之后: 8.再commit一次該項目(因為在delete之前,,我們已經(jīng)commit過一次項目,,所以需要再次commit刪除了文件夾后的項目,更新遠程倉庫,,使之保持同步),。PS:一般commit不成功,會報錯,,這時,,需要先update,然后再commit,。 9.然后再右鍵需要忽略的文件(夾),,點擊ignore 10.最后再來一次commit(前后一共3次commit) 怎么驗證所有需要忽略的文件都已經(jīng)全部忽略掉? 只修改了一個文件,,如果commit的時候系統(tǒng)也只是commit被修改的那一個文件,,說明忽略成功(所有需要忽略的文件都已經(jīng)被忽略),如果修改了一個文件,,commit的時候系統(tǒng)卻需要commit多個文件,,說明還有一些文件沒有被忽略。 總結: 需要忽略的文件: 1.Xcode默認會記住我們當前正在編輯的文件,,也就是上次退出項目時停留的文件,,下次打開項目會停留在該文件。我們不需要把這些信息共享給同事,,所以需要忽略,。 2.Xcode會記錄目錄的打開情況。同事不需要共享,。 3.斷點信息,。同事不需要共享。 以上三個需要忽略的信息,,都在xcuserdata 文件夾下,,所以只需要忽略xcuserdata文件夾。
至此,項目經(jīng)理用cornerstone初始化項目,,忽略文件等操作已經(jīng)完成,。
—————————————————————cornerstone的多人開發(fā)—————————————————————————— 因為cornerstone根Xcode相比,能夠更好的忽略文件,,所以除了項目經(jīng)理第一次初始化項目的時候需要用到cornerstone,,其他時候用Xcode的source control的命令就可以進行源碼的update和commit。 新人加入: 1.新人需要做的第一件事情 拿到賬號密碼后,check out源碼 如果新人修改了代碼并且也commit了 其他員工需要update
新員工給項目增加了一個類,,此時這個類文件變成了A(Add),此時需要commit,,但是project setting也需要被提交,。因為project setting記錄了目錄的結構情況,添加,、刪除,、移動文件位置影響了目錄結構,所以也需要提交project setting,,不能忽略,。 ——————————————————————解決沖突————————————————————————— 兩個人前后都改了同一個位置的代碼,先改代碼的人先commit,。后改代碼的沒有update就commit,,此時就會產(chǎn)生沖突。例如: 經(jīng)理->update->修改了第99行代碼->commit,;張三->修改了第99行代碼->commit,。此時就會沖突。
——————————————————Xcode中svn使用注意---添加靜態(tài)庫————————————————————— 注意:靜態(tài)庫拖拽到項目中后,,.a文件默認是I(ignore)的,,但是.a文件是需要參與編譯的,所以需要用命令行把.a文件添加到項目中,,然后commit,。 ——————————————————Xcode中svn使用注意---storyBoard————————————————————————— 在原來的Xcode版本中,svn對storyBoard的支持非常不好,,鼠標點擊一下xib或者storyBoard,,xib或者storyBoard就會變成M。現(xiàn)在6.0版本之后,,可以點擊,,但是不可以移動,如果移動xib或者storyBoard也會變?yōu)镸。因為storyBoard本質是XML,。 多個人同時修改storyBoard的后果,,storyBoard沖突,導致storyBoard打不開,。 和代碼沖突類似,,如果先往storyBoard的同一個位置添加了一個控件,并且后者在不知道前者在同一個位置添加了控件的情況下也再該位置添加了一個控件,,那么兩個控件在storyBoard上的位置沖突,,后者commit會報錯。 建議:盡量使用xib,,這樣可以避免多個人同時操作storyBoard,。 ——————————————————Xcode的checkOut和svn使用技巧————————————————————————— 1.盡可能修改文件之前先update文件,寫一些代碼后就立即提交到服務器 2.盡可能在下班之前半小時就提交代碼,,這樣可以預留出來半小時解決可能存在的沖突 3.修改公共文件之前盡可能和同事說一聲,,修改完成后讓同事及時更新,不要做啞巴式程序員,,多溝通才能避免一些不必要的沖突和誤會,,不僅是體現(xiàn)出來對工作的認真,也是對同事的尊重(哥們我之前工作就一直不愛說,,工作很低調,,吃過這虧)。 PS:關于svn目錄結構(trunk,、branches,、tags)請閱讀筆者的:http://www.cnblogs.com/wsnb/p/4771379.html
|
|