background preloader

Branching

Facebook Twitter

The Flow Of Change. Blog Archive » A successful Git branching model. Armed and Dangerous » Blog Archive » Risk, Verification, and the INTERCAL Reconstruction Massacree. This is the story of the INTERCAL Reconstruction Massacree, an essay in risk versus skepticism and verification in software development with a nod in the general direction of Arlo Guthrie. About three hours ago as I began to write, I delivered on a promise to probably my most distinguished customer ever – Dr.

Donald Knuth. Don (he asked me to call him that, honest!) Had requested a bug fix in INTERCAL, which he plans to use as the subject of a chapter in his forthcoming book Selected Papers on Fun And Games. As of those three hours ago Donald Knuth’s program is part of the INTERCAL compiler’s regression-test suite. But I’m not actually here today to talk about Donald Knuth, I’m here to talk about risk versus skepticism and verification in software engineering – in five part harmony and full orchestration, using as a case study my recent experiences in (once again) calling INTERCAL forth from the realm of the restless dead.

Here’s what I said in reply: Still. Chapter 7: Branches. This is part of an online book called Source Control HOWTO, a best practices guide on source control, version control, and configuration management. What is a branch? A branch is what happens when your development team needs to work on two distinct copies of a project at the same time. This is best explained by citing a common example: Suppose your development team has just finished and released version 1.0 of UltraHello, your new flagship product, developed with the hope of capturing a share of the rapidly growing market for "Hello World" applications.

But now that 1.0 is out the door, you have a new problem you have never faced before. Development of 2.0. It is important for these two lines of development to remain distinct. The most obvious way to solve this problem would simply be to make a copy of your entire source control repository. The two-repository approach becomes disappointing in situations where you want to apply a change to both trees. Two branching models Under the hood. Branching Strategies. Branching Strategy. This article describes three key branching models used in Software Engineering projects. These branching strategies are employed to streamline software development and support release management needs. The models are: Model-1 Small Team Model using Emergency Fix Branches Model-2 Medium Team Model using a separate developer and release branch Model-3 Large Team Model using parallel development streams Below we describe each model in more detail i.e. discussing structure, advantages, disadvantages and recommendations.

Note: All models are based on their predecessor i.e. Note: As a minimum recommendation all projects should use Model-2 or better. Summary: Developers and Release Manager use a single mainline. Note: This is a very traditional model, however is vulnerable to serious problems. Simplicity and Minimal need for Branch Integration (post Efix) Support tools with Weak Merge/Integration Facilities Allows fixes to be done in separate parallel branch Avoids Release and Development contention No.