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

Reply via email to