Take the 2-minute tour ×

If we have a source control branch that we use to stop features and bug test (including additional commits on this branch to fix said bugs), what should it be called?

Is "Release Candidate" appropriate?

My thoughts are that such a branch would be called "Release" and that using the word "candidate" implies it is immutable. You can have candidate 1 and candidate 2, but those specific candidates should never change; ie. candidate 1 wouldn't have any commits, that would modify it in any way.

Links or examples would be great, as the person I was discussing this with is very hard headed.

Related question: Is there any specification for promoting a release candidate? (covers how finished RC can be considered)

share|improve this question
add comment

1 Answer

It can still be considered as a final integration step (and in that, "not immutable"):

This is where you are still:

  • integrating features approved to go into the next release.
  • fixing bugs manifesting after integration test (SIT - System Integration Test, and UAT, User Acceptance Tests)

You can consider "RC" as being even more stable that I just described, but you could still fix show-stopper bugs.
In that sense, you wouldn't have "candidate 1" and "candidate 2" (simultaneously). RCs are usually sequential.

Then, a "Release" branch is for post-production (hot-fixes, and release maintenance).
It freezes the sate of the application when going into production, and uses that at a starting point to maintain what is into production.

In short:

  • branches aren't immutable: they isolate a development effort in the development lifecycle.
    You should be expected to add commits. In any branch.
  • Tags (or "label", or "baseline", or...) are immutable: they freeze a specific state of the code at a point in time.
share|improve this answer
Hmmm, so you don't consider something with the name "candidate" to be immutable. I know branches are mutable, but I figured it made sense to have some branches be considered immutable, like master and [IMO] release candidate. I would consider a "test" branch to be what someone bug fixes on, and a hotfix branch for when people fix bugs that snuck into master. –  Jason McCarrell Dec 6 '12 at 22:43
@JasonMcCarrell Not exactly: I don't consider a branch to be immutable. Ever. A tag, yes, so make a tag call "RC1" if you want immutability. But if you make a branch, it is to isolate a development effort. Any effort. If you don't want to do anything with that branch... don't make abranch ;) –  VonC Dec 6 '12 at 22:47
@JasonMcCarrell and that apply to master, even if its role can be limited to record what goes into production. It is still mutable, even if the commits are rare and specifics. True immutability equals tag. –  VonC Dec 6 '12 at 22:48
add comment

Your Answer


