SVN之 trunk, branches and tags意義

來源:互聯網
上載者:User

——簡單的對比

  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:

  • 如果你需要修改你的應用程式,或者為它開發一個新的特性,請從trunk中建立一個新的branch,然後基於這個新的分支進行開發
  • 除非是因為必須從一個branch中建立一個新的子branch,否則新的branch必須從trunk建立
  • 當你建立了一個新branch,你應當立即切換過去。如果你沒有這麼做,那你為什麼要在最初的地方建立這個分支呢?

——Tags

  從表面上看,SVN branches和SVN tags沒有什麼差別,但是從概念上來說,它們有許多差別。其實一個SVN tags就是上文所述的“為這棵樹照張相”:一個trunk或者一個branch修訂版的命名快照。

  以下內容將告訴你如何使用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)

——工作流程範例

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.