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