On 08.01.2010 18:27, John Sparrow wrote: > > Question about the THg repository itself. I'm curious about how the 'stable' > and 'default' branches work in practice. Any resources you can point me to? > > Specifically, it looks like the stable branch is repeatedly merged into > default (I would have expected the other way around?).
That's a frequent misconception. Bugfixes are best committed to stable and merged into default. The default branch is the "unstable", "main" or "trunk" branch which is "poisoned" with new features. Fixing a bug there is a problem, because it would sit on top of new features that must not be merged into stable prematurely. Bugfixes are best done on the branch that has "evolved the least since branching" [2] and then merged into the other branches (here: default branch). The most extreme form of this pattern would be to commit a bugfix changeset (B) having the changeset from where the branches forked most recently (F) as its parent and then merge B into all branches (here: default and stable). > So how are new features in 'default' added to 'stable'? Transplanting? There is a point in time before a scheduled release, where the default branch is merged into the stable branch. That's usually somewhere around "feature freeze" [1]. (TortoiseHg follows the same time based release plan as Mercurial itself.) Last time this happened with 1788ca3385fa (local revision 4653): $ hg log -r 4653 -r 4475 -r 4652 changeset: 4653:1788ca3385fa branch: stable parent: 4475:cdcc0f4e1922 parent: 4652:071ea4834dc4 user: Steve Borho <...> date: Sat Oct 17 22:22:58 2009 -0500 summary: Merge default branch to stable for 0.9 changeset: 4475:cdcc0f4e1922 branch: stable parent: 4436:cd50b769e235 user: Steve Borho <...> date: Thu Oct 08 19:10:19 2009 -0500 summary: Added tag 0.8.3 for changeset cd50b769e235 changeset: 4652:071ea4834dc4 user: Sune Foldager <...> date: Fri Oct 16 21:24:30 2009 +0200 summary: visdiff: prefer --change over --rev in rawextdiff 3-way mode The first parent changeset of 1788ca3385fa is the target branch (stable) and the second parent is the source branch (default). Source is merged into target. Next time this will happen for 0.10. > Sorry if this is the wrong place to post... That's the perfect place to ask. [1] http://mercurial.selenic.com/wiki/TimeBasedReleasePlan [2] http://www.perforce.com/perforce/papers/bestpractices.html (see "5. Change Propagation") ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ Tortoisehg-discuss mailing list Tortoisehg-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tortoisehg-discuss