Version Control – Part 3: Branching/Merging

Branch and Merge

Many people who implement Update/Commit typically organize the server into the Trunk and Branches folders:

This allows you work on long term, scheduled features in Trunk, while making unexpected bug fixes in the latest branch: v2.0. The changes in the v2.0 branch can easily be merged back into Trunk using the version control software.

After you release the code and before working on the next feature, you branch your code to the Branches\v2.0 directory. When a bug needs to be fixed in the released version, you

  • Fix the bug in the Branches\v2.0 directory (The blue line in the image above)
  • Commit the fix to the Branches\v2.0 directory
  • Merge (using your version control software) the change from Branches\v2.0 to the Trunk directory, which happens to have a change (green line).

Release Flexibility Problems

Now you have been using update/commit version control and you have released your software and it is being used by end users. The to-do list is growing and some features can be done quickly and some take longer. You can easily find yourself in a situation where some of the long-term features have been committed to the Trunk; however the business has requested a quick feature that they need ASAP. For instance, a new client has changed the priority of a quick feature.

Another problem is that developers commit changes to the code unaware of the current release cycle. You can find that a committed change during testing can delay the release when the committed change should have been held back for a later release. The fundamental problem is that developers “decide” what is included in the release, when this decision belongs to other people, such as a release manager, project manager or the test manager.

The Hack in the Update / Commit Model

There are several ways to address the problems above using the Update/Commit model, but the hack below will lead you naturally to distributed version control.

If you have become comfortable with branching and merging between Trunk and Branches\v2.0, then there is an easy next step to address this problem. Branching and merging each feature:

When a developer starts to work on a new feature, they branch from Trunk to Features\Bar Feature and start working in the Bar Feature folder. When it is decided that the Bar feature is finished and ready for release, they merge the code back to Trunk using the version control software. This allows a manager to decide to release the Bar feature even though the Foo feature is not ready.

Conclusion

Working on features in a branch allows people to decide late in the release cycle what will be included in the release. It also allows flexibility when priorities change in the middle of a release cycle.

The downside is that there will be many Feature folders that are no longer needed because they have been merged back, or have been orphaned. Linus calls these “expensive” branches, since they are intended to be either temporary or private. Distributed version control addresses this…

About Clay Lenhart

I am a DBA/Technical Architect for Latitude Group and love technology.
This entry was posted in Source Control. Bookmark the permalink.

4 Responses to Version Control – Part 3: Branching/Merging

  1. [url=http://www.gowatchs.com/brand-167.html]上品なブランドの新作が期間限定セール発売上品なルイヴィトン、グッチやエルメスなどのブランドコピーの新作が大量入荷しました。種類が豊富で、勝手に選べます。激安の上に、品質には保証があって、末長くご愛用いただけます。新年とクリスマスを迎えで、期間限定セールが開催中で、早く手に入れましょう。[/url]

  2. [url=http://www.ooobag.com/wallet/louisvuitton/index_8.html]ロレックススーパーコピー業界でアブラアム・ルイ・ブレゲ|【ブレゲ(1747年~1823年)】有名な時計メーカー「Breguet」の創設者で、天才時計職人とよばれた男。時計の歴史を200年早めた、と言われる。当時の彼の顧客には、ナポレオンやマリー・アントワネットなど超大物揃いだったとかユリス・ナルダン コピーブランド偽物、偽物ブランド、ルイヴィトンコピー、 ロレックスコピー、シャネルコピー、グッチコピー、エルメスコピー、 ボッテガヴェネタコピー、 バーバリーコピー、ミュウミュウコピー、トリーバーチコピー、バレンシアガコピー、ディオールコピー、ブルガリコピー、ブラダコピー、 ドルチェ&ガッバーナコピー、オメガコピー、フランク ミュラーコピー、gagaコピー。 靴/サンダル,サングラスコピー※ブレゲの発明には、衝撃を吸収する「パラシュート」、暗闇でも音で時を知らせる「ミニッツリピーター」、地球の重力による精度誤差を補正する「トゥールビヨン」など枚挙にいとまがない[/url]

  3. [url=http://www.eevance.com/tokei/hermes]ブランドN級品ブランドコピー 代引き,スーパーコピー時計,ブランドN級品,楽天コピーブランド,,偽物ブラン日本最大級の最高のスーパーコピーブランド財布激安代引き販売店,スーパーコピー時計の激安老舗.!国内外No.1時計コピー工房,アフターサービスも自ら製造したスーパーコピー時計なので、技術力でお客様に安心のサポー トをご提供させて頂きます。スーパーコピー 代引きN品をご 購入の方は、こちらへ. 弊社は正規品と同等品質のコピー品を低価で お客様に提供します!すべての商品は品質2年無料保証です。100%実物写真ですし、品質が完璧です!”スーパーコピーブランド財布激安 偽物財布激安コピー ルイヴィトン財布偽物,偽物財布コピー[/url]

  4. 激安市場直営店ボッテガヴェネタバッグ コピー
    当店のブランドコピー商品は他店よりも質が高く、金額も安くなっております。
    ご購入する度、ご安心とご満足の届けることを旨にしております
    よろしくお願いします ありがとうございます (*^__^*)
    ブランドコピー豊富に揃えております、最も手頃ず価格だお気に入りの商品を購入。
    ブランドコピー時計N品のみそ取り扱っていまずのて、2年品質保証。
    当社の商品は絶対の自信が御座います。
    クロエ バッグ 人気,クロエ ポーチ,chloe バッグ
    ブランドコピーブランド専門店おすすめ!信用第一、良い品質、低価格は当社の商品は絶対の自信が御座います。ブランドコピーベルトブランドコピー財布ブランドコピーサングラス偽物◆ 当社今日 マフラー面な更新!●在庫情報随時更新!(*^-^*)S/AAA品質 シリアル付きも有り付属品完備!全物品運賃無料(日本全国)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>