SVN的trunk branch tag (二)

——簡單的對比測試

  SVN的工做機制在某種程度上就像一顆正在生長的樹:編碼

一顆有樹幹和許多分支的樹
分支從樹幹生長出來,而且細的分支從相對較粗的樹幹中長出
一棵樹能夠只有樹幹沒有分支(可是這種狀況不會持續好久,隨着樹的成長,確定會有分支啦,^^)
一顆沒有樹幹可是有不少分支的樹看起來更像是地板上的一捆樹枝
若是樹幹患病了,最終分支也會受到影響,而後整棵樹就會死亡
若是分支患病了,你能夠剪掉它,而後其餘分支還會生長出來的哦!
若是分支生長太快了,對於樹幹它可能會很是沉重,最後整棵樹會垮塌掉
當你感受你的樹、樹幹或者是分支看起來很漂亮的時候,你能夠給它照張相,這樣就就能夠記得它在那時是多麼的贊。
——Trunk版本控制

  Trunk是放置穩定代碼的主要環境,就好像一個汽車工廠,負責將成品的汽車零件組裝在一塊兒。視頻

  如下內容將告訴你如何使用SVN trunk:開發

除非你必須處理一些容易且能迅速解決的BUG,或者你必須添加一些無關邏輯的文件(好比媒體文件:圖像,視頻,CSS等等),不然永遠不要在trunk直接作開發
不要由於特殊的需求而去對先前的版本作太大的改變,如何相關的狀況都意味着須要創建一個branch(以下所述)
不要提交一些可能破壞trunk的內容,例如從branch合併
若是你在某些時候偶然間破壞了trunk,bring some cake the next day (」with great responsibilities come… huge cakes」)
——Branches部署

  一個branch就是從一個SVN倉庫中的子樹所做的一份普通拷貝。一般狀況它的工做相似與UNIX系統上的符號連接,可是你一旦在一個SVN branch裏修改了一些文件,而且這些被修改的文件從拷貝過來的源文件獨立發展,就不能這麼認爲了。當一個branch完成了,而且認爲它足夠穩定的時 候,它必須合併回它原來的拷貝的地方,也就是說:若是原來是從trunk中拷貝的,就應該回到trunk去,或者合併回它原來拷貝的父級branch。工作流

  如下內容將告訴你如何使用SVN branches:it

若是你須要修改你的應用程序,或者爲它開發一個新的特性,請從trunk中建立一個新的branch,而後基於這個新的分支進行開發
除非是由於必須從一個branch中建立一個新的子branch,不然新的branch必須從trunk建立
當你建立了一個新branch,你應當當即切換過去。若是你沒有這麼作,那你爲何要在最初的地方建立這個分支呢?
——Tagsio

  從表面上看,SVN branches和SVN tags沒有什麼差異,可是從概念上來講,它們有許多差異。其實一個SVN tags就是上文所述的「爲這棵樹照張相」:一個trunk或者一個branch修訂版的命名快照。table

  如下內容將告訴你如何使用SVN tags:

做爲一個開發者,永遠不要切換至、取出,或者向一個SVN tag提交任何內容:一個tag比如某種「照片」,並非實實在在的東西,tags只可讀,不可寫。
在特殊或者須要特別注意的環境中,如:生產環境(production)、?(staging)、測試環境(testing)等等,只能從一個修復過的(fixed)tag中checkout和update,永遠不要commit至一個tag。
對於上述說起到的環境,能夠建立以下的tags:「production」,「staging」,「testing」等等。你也能夠根據軟件版本、項目的成熟程度來命名tag:「1.0.3」,「stable」,「latest」等等。
當trunk已經穩定,而且能夠對外發布,也要相應地從新建立tags,而後再更新相關的環境(production, staging, etc)
——工做流樣例

  假設你必須添加了一個特性至一個項目,且這個項目是受版本控制的,你差很少須要完成以下幾個步驟:

使用SVN checkout或者SVN switch從這個項目的trunk得到一個新的工做拷貝(branch)使用SVN切換至新的branch完成新特性的開發(固然,要作足夠的測試,包括在開始編碼前)一旦這個特性完成而且穩定(已提交),並通過你的同事們確認,切換至trunk合併你的分支至你的工做拷貝(trunk),而且解決一系列的衝突從新檢查合併後的代碼若是可能的話,麻煩你的同事對你所編寫、更改的代碼進行一次複查(review)提交合並後的工做拷貝至trunk若是某些部署須要特殊的環境(生成環境等等),請更新相關的tag至你剛剛提交到trunk的修訂版本使用SVN update部署至相關環境

相關文章
相關標籤/搜索