Advocacy vs. git

Hans Meine meine at informatik.uni-hamburg.de
Fri Apr 24 15:48:54 CDT 2009


On Freitag 24 April 2009, Kevin Bullock wrote:
> On 24 Apr 2009, at 12:41 PM, bradford wrote:
> > What about the rebase extension?
> > http://www.selenic.com/mercurial/wiki/index.cgi/RebaseExtension
>
> It's my contention that rebase is like goto: useful for the few cases
> where you need the raw power, dangerous when used for common cases.
> But I could be wrong. I've explored the rebase extension a bit, but
> haven't found a use for it yet.
>
> Do others use the rebase extension in daily work? What's the advantage?

I used it some times in a try-out-in-personal-repo manner, but recently when I 
tried to apply it to a real-world scenario (in which I was collaborating with 
a second person while writing an article, i.e. two concurrent developments on 
the same repo), I had many problems because it was rebasing the wrong 
changesets on the wrong head (the opposite of what I intended).

The goal is to linearize history, not in order to hide anything, but just in 
order not to have ridiculously many merge commits when you exchange 
changesets very often (i.e. push/pull back and forth 20 times a day).

Thanks for your write-up [1]; I see that MQ (which I know much longer and 
better than the rebase extension) makes it more difficult to do the wrong 
thing (since pushing patch changesets is prevented), alas it also needs a lot 
more commands.

In any case (rebase / mq / transplant), it seems to require both developers to 
be prepare for the workflow up front, in order to prevent undesired history 
to get pulled back from another repo again.  But that's obviously the 
downside of modifying history in any case.

Another way to look at the above goal / motivation is that the workflow should 
not be more difficult than with SVN.  AFAICS, in some settings, it is not the 
branching which makes a DVCS like mercurial desirable, but the local history 
and fast disconnected operations.  Here, mq might actually be the answer 
(you'd always put your changes into a patche queue, and just qfinish before 
pushing, and after pulling), possibly in conjunction with a hook that 
prevents pushes creating new heads by accident.

Ciao, /  /                                                    .o.
     /--/                                                     ..o
    /  / ANS                                                  ooo

[1] Kevin's blog post: http://kbullock.ringworld.org/2009/4/24/on-rebasing
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
Url : http://selenic.com/pipermail/mercurial/attachments/20090424/44812ee6/attachment.pgp 


More information about the Mercurial mailing list