最近在寫《IOS性能調優系列》,今天偷個懶,寫寫SVN與TortoiseSVN實戰的第二篇,標簽與分支。
第一篇詳見《SVN與TortoiseSVN實戰:從入門到精通》
SVN與TortoiseSVN實戰系列中很多知識點來源於《版本控制之道》這本書,我寫的內容主要結合了TortoiseSVN工具,更多側重於實際操作。
很多項目人員沒有正確運用SVN,僅僅作為源代碼的團隊共享來用,而沒有充分利用標簽、分支這些強大的特性。
要正確使用SVN的標簽和分支特性,就要先建立起合理的項目倉庫結構。
正確的SVN項目倉庫結構
很多項目人員往往在創建項目倉庫以后,直接將整個項目的源代碼提交到倉庫的根目錄,這往往是由於對SVN沒有系統的了解。
引用書里的圖片,正確的項目倉庫目錄結構如下圖:
在根目錄下首先建立三個目錄:
1、trunk:又稱為主干,這個子目錄才是應該將項目源代碼提交到的位置。
trunk目錄代表着開發的主線,大部分的開發工作涉及到的更新、提交都在這個目錄里,就跟“原始”的SVN使用一樣。
2、branches:這個目錄就是分支目錄,所有新建的分支都應放在這個目錄。
每一個branches下的分支代表了一條並行的開發過程,如果不明白可以繼續往后看。
3、tags:這個目錄是標簽目錄,所有建立的標簽都應放在tags目錄下。
每一個tags下的標簽代表了一個項目的時間節點,或者說是事件、里程碑。
這三個目錄之所以如此命名,完全是約定俗成,而非SVN規定。
什么是分支?
分支的基本概念:一條基於另外一條開發線存在的分支,並共享在分離之前的日志,一個分支就象一個拷貝的存在,並從那里離開,並具有自己的歷史。
沒有找到關於分支很簡潔的解釋,我的解釋是分支相當於對於開發中的主干進行了復制,從此在分支上后續的所有操作與主干上的所有操作互不影響。
使用分支前:
你開發的IOS App已經測試完畢,提交到APPStore審核,在APPStore審核過程中你可能又開發了些功能但還沒通過測試,這時APPStore把你的應用退回了,可能是你的Welcome圖片不合格需要換一下,很簡單的修改可能完全不需要經過測試流程,但這時你只有兩種選擇:
1、把代碼回滾到提交時的狀態,修改后提交;
2、把手頭的功能開發完成,經過完整的測試、發布流程提交。
合理使用分支后:
你開發的IOS App已經測試完畢,提交到APPStore審核,根據你提交的版本號建立一個分支,在APPStore審核過程中你可能又開發了些功能但還沒通過測試,這時APPStore把你的應用退回了,可能是你的Welcome圖片不合格需要換一下,到這里你完全可以輕松應對,只需要把之前建立的那個分支簽出到本地,修改后提交。
使用分支后整個過程So easy~
分支里保存的實際上是你建立分支時代碼的快照,在分支上進行的修改還可以合並到主干中。
什么是標簽?
標簽和分支的本質是一樣的,可以看到TortoiseSVN中,標簽和分支實際上在一個菜單:
分支與標簽的使用也是約定俗稱的,混用分支與標簽SVN也不會禁止。
標簽用來記錄項目中的事件或里程碑,可以讓你給項目中的事件起一個名字,比如發布2.0.0版本,以后你可以使用這個名字來簽出它。
標簽與分支對比
還是繼續上面的例子:
APPStore審核通過,這時你應該為分支建立一個標簽,然后將分支的修改合並到主干,然后刪除分支。
更直白的說,你可以在分支上進行並行開發,而不應該修改標簽里的內容,標簽僅應當作為一份代碼的快照。
后續
本篇先將理論,下篇講解使用TortoiseSVN進行分支和標簽的實際操作,網上查了下,發現使用TortoiseSVN的分支合並操作居然全是錯的,所以感覺到非常有必要寫出來,明天更新~
記錄,為更好的自己!轉載請注明出處~