atom feed69 messages in com.selenic.mercurial-develRe: RFC: dealing with dead, anonymous...
FromSent OnAttachments
Martin GeislerMay 7, 2010 10:33 am 
Dirkjan OchtmanMay 7, 2010 10:37 am 
Matt MackallMay 7, 2010 10:59 am 
Martin GeislerMay 7, 2010 11:14 am 
Matt MackallMay 7, 2010 11:46 am 
Dirkjan OchtmanMay 7, 2010 1:14 pm 
Gilles MorisMay 8, 2010 12:10 am 
Martin GeislerMay 8, 2010 1:31 am 
Martin GeislerMay 8, 2010 1:34 am 
Martin GeislerMay 8, 2010 1:48 am 
Martin GeislerMay 8, 2010 2:09 am 
Gilles MorisMay 8, 2010 3:50 am 
Martin GeislerMay 8, 2010 1:10 pm 
Gilles MorisMay 9, 2010 9:33 am 
Gilles MorisMay 9, 2010 1:49 pm 
Gilles MorisMay 9, 2010 1:49 pm 
Gilles MorisMay 9, 2010 1:49 pm 
Gilles MorisMay 9, 2010 1:49 pm 
Gilles MorisMay 9, 2010 1:49 pm 
Matt MackallMay 9, 2010 2:36 pm 
Matt MackallMay 9, 2010 2:43 pm 
Matt MackallMay 9, 2010 2:45 pm 
Matt MackallMay 9, 2010 2:47 pm 
Martin GeislerMay 9, 2010 4:11 pm 
Dirkjan OchtmanMay 9, 2010 10:50 pm 
Gilles MorisMay 9, 2010 11:31 pm 
Gilles MorisMay 9, 2010 11:49 pm 
Matt MackallMay 10, 2010 12:04 am 
Gilles MorisMay 10, 2010 12:37 am 
Gilles MorisMay 10, 2010 12:37 am 
Matt MackallMay 10, 2010 12:38 am 
Matt MackallMay 10, 2010 12:58 am 
Sune FoldagerMay 11, 2010 2:02 am 
Sune FoldagerMay 11, 2010 2:08 am 
Sune FoldagerMay 11, 2010 2:14 am 
Sune FoldagerMay 11, 2010 2:20 am 
Matt MackallMay 11, 2010 3:53 pm 
Matt MackallMay 11, 2010 3:56 pm 
Gilles MorisMay 12, 2010 12:52 am 
Gilles MorisMay 12, 2010 1:15 am 
Gilles MorisMay 12, 2010 1:15 am 
Gilles MorisMay 12, 2010 1:15 am 
Gilles MorisMay 12, 2010 1:15 am 
Gilles MorisMay 12, 2010 1:15 am 
Gilles MorisMay 12, 2010 5:17 am 
Augie FacklerMay 12, 2010 7:35 am 
Matt MackallMay 12, 2010 8:33 am 
Matt MackallMay 12, 2010 8:34 am 
Matt MackallMay 12, 2010 8:34 am 
Matt MackallMay 12, 2010 8:55 am 
Gilles MorisMay 12, 2010 2:33 pm 
Gilles MorisMay 13, 2010 7:31 am 
Matt MackallMay 13, 2010 1:48 pm 
Martin GeislerMay 17, 2010 1:09 am 
Martin GeislerMay 17, 2010 1:22 am 
Rafael Villar Burke (Pachi)May 17, 2010 2:07 am 
Augie FacklerMay 17, 2010 5:57 am 
Martin GeislerMay 17, 2010 6:56 am 
Augie FacklerMay 17, 2010 7:46 am 
Martin GeislerMay 17, 2010 8:13 am 
Augie FacklerMay 17, 2010 8:41 am 
Gilles MorisMay 19, 2010 8:00 am 
Martin GeislerMay 19, 2010 3:53 pm 
Martin GeislerMay 19, 2010 3:58 pm 
Augie FacklerMay 24, 2010 5:15 am 
Peter ArrenbrechtMay 26, 2010 6:23 am 
Rafael Fernández LópezJun 3, 2010 5:35 am 
Peter ArrenbrechtJun 3, 2010 6:14 am 
Martin GeislerJun 4, 2010 12:18 am 
Subject:Re: RFC: dealing with dead, anonymous feature branches
From:Martin Geisler (mg@aragost.com)
Date:May 8, 2010 1:10:02 pm
List:com.selenic.mercurial-devel

Gilles Moris <gill@free.fr> writes:

On Saturday 08 May 2010 10:32:04 am Martin Geisler wrote:

I am more concerned the close-branch behavior itself. May be I am stupid, but I have hard time to understand the logic behind the current implementation. [...]

No, I agree with you and your requirements. They sound like the way I have also imagined closed heads to work.

So I'm suggesting something stronger than you: dead heads behave like "Gilles-style" closed heads and they are not pushed or pulled.

I agree that push/pull can be considered orthogonal, and actually your idea is very neat. But my fears are:

- from user's perspective, comments or bug report like this: "Hey guys, I've found a bug in Mercurial. Pull does not work. I try to pull a nice feature that Bob attempted at one point of time, I can see it's there but pull does not work on his repo."

May be it's just a matter of better advertising closed heads and of education. But we should be prepared to that.

Yeah, there will be the problem of how to discover or re-find the dead heads since I think they should be skipped in 'hg log' by default (not hidden from other parts of Mercurial, just hidden in by default in the various log viewers).

But then again, with an option to 'hg log', 'hg grep', etc. for showing dead changesets, then I don't think the problem is all that big.

Jan had some ideas for building a cache that would be used to track if a changeset is considered dead or alive. A changeset is alive when it is the ancestor of a head that is alive. So figuring out if revision 1 is alive could take a while with 100,000 changesets (hi Greg! :-)

- internally, added complexity on the push/pull changeset discovery algorithm. But may be it's peanuts compared to the logic already in place. I don't know enough to evaluate.

I also don't know the algorithm and the capabilities in detail.

Anyway, it's worth digging as dangling heads has been a longstanding concern.

Indeed -- in some sense one can just leave the dangling heads there, but Mercurial is currently made in such a way that it's an uphill fight to have multiple heads.

So I basically think we need a way to say to Mercurial: "yes, I know there is an extra head, but I've marked it as dead/closed -- please stop bothering me" :-)

Excluding the dead heads from push/pull will furthermore solve the problem people have when they have made a mess and don't want to push it anywhere. Just today a guy came by on IRC who had managed to commit the same change at three different places in his history. Now Mercurial (wisely) told him that he would create multiple heads on push and he was very confused... It would have been great to tell him to do

hg update first-troublesome-head hg commit --mark-dead (or --kill, --murder, etc :-) hg update second-troublesome-head hg commit --mark-dead hg push

Instead I tried to get him to make a good clone with 'hg clone -r', but he said his repository was too big... he just wanted to get rid of the extra heads. Strip would have been an option, but marking them as dead would have been even nicer.

aragost Trifork Professional Mercurial support http://aragost.com/mercurial/