1.0 approaches

Adrian Buehlmann adrian at cadifra.com
Fri Feb 8 03:22:59 CST 2008


On 08.02.2008 05:55, Brendan Cully wrote:
> On Thursday, 07 February 2008 at 18:49, Matt Mackall wrote:
>> There are still some areas with rough edges - named branches and case
>> sensitivity come to mind. Improvements there that aren't too invasive
>> will be considered, but these aren't currently going to be considered
>> showstoppers.
> 
> In my opinion, named branches in their current form do more harm than good.
> People use them expecting them to behave more like in-repository clones
> that they can play with and then drop, and usually become frustrated
> with them, but only after they've permanently cluttered their repositories.
> 
> They also interact badly with clone and older clients, as well as having
> more benign UI warts.
> 
> I'd be inclined to discourage their use strongly in 1.0 (maybe relegating 
> them to debugcommands) unless they are improved. I think they will tend to
> result in bad feelings, whereas most of the rest of mercurial is warm
> and fuzzy.

Removing "Mercurial named branches" would be somewhat of a surprise for me. 
We've just switched from Perforce to Mercurial and I've used Mercurial named 
branches to *name* major development lines in Mercurial the same way as we had 
them in Perforce (Please note that I'm aware that Perforce "branches" are not 
the same as Mercurial named branches. I've just used them in Mercurial to mark 
changesets).

For example in our project, I used the Mercurial "branch" name "default" *and* 
the Mercurial branch name "rel-1.3".

I do find it handy that I have *names* for them. We do have a main repository 
for product MP on our internal server. I first considered having two separate 
main repositories: one for the "default" or trunk development line and one for 
"rel-1.3" development. I then quickly realized that I would end having "rel-1.3" 
changesets in the default line repo anyway, because we do small fixes in the 
"branch" that has evolved the least and merge them into the default "branch". So 
I dropped the "separate main repositories" approach.

But we don't want to have trunk features in the rel-1.3 development line. And
having a name marker for changesets of major changeset subtrees is helpful.

Perhaps, it is just the name "branch" which confuses people? I see it more like 
an automatic tag, probably best used for major development lines. But I fail to 
see how exactly it does that much harm up to the point where a released feature 
which is in use should be removed. That ship has sailed anyway.




More information about the Mercurial mailing list