Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The need for a trunk paradigm (or, in the git world, devel) is mostly the need for a point where cutting-edge development (feature branches) and quality control measures (release branches) meet. It serves as a common ground for all active branches, which are mostly defined through their difference to the trunk.</p> <p>The vast majorities of projects have trunks, and most of the projects that think they have none have one nonetheless, but don't realize it. The trunk is the branch of the project that receives all new features and is not intended to terminate. When you have multiple branches with this property, they are either equal or will drift so far apart from each other that you have two projects. The tree metaphor is really great here - where there are two trunks, there are two trees.</p> <p>While alternative models often seem fine at the start, people often find out the hard way that more than one permanent active branch is deadly to team communication. The advantage of a trunk is that anyone in the team developing a feature can branch off from trunk, develop, merge into trunk and be happy. With multiple active branches, you will have to merge into multiple branches or suffer a functionality fork with all the bad debugging and user support. That's the main reason for adopting a trunk scheme. <a href="http://nvie.com/posts/a-successful-git-branching-model/" rel="nofollow">Vincent Driessen has written a splendid article about this development model</a>, which applies to SVN as well once you replace the devel branch by the trunk. </p> <p>It seems that you do actually follow a trunk scheme with your project. Your young branches (gamma in the example) are actually the trunk of the project because they receive new functionality. The older branches (alpha and beta) receive bug fixes, which are later merged into the branch you called trunk. However, since you never fork off again from trunk, but only from gamma, the merges from alpha and beta are unnecessary. Trunk seems to have the least features and the most stability (oldest branch), which is contrary to normal trunk logic.</p> <p>So, you could represent your project structure by a trunk that follows the uppermost lines in your example (branches from "trunk" into "alpha" into "beta" into "gamma") and multiple release branches ("alpha" and "beta") that merge into trunk regularily <em>and are intended to terminate</em>. This way, you have erased one unnecessary branch (labelled "trunk") and have far easier merge schemes.</p> <p>This usage contrasts with your requirement for "two or more versions in development simultaneously", but looking at your schema, I think that only a single version receives new features. If I thought wrong, please clarify this point.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload