[darcs-users] rebase: initial preview release

Simon Marlow marlowsd at gmail.com
Fri Aug 20 09:44:50 UTC 2010

On 17/08/2010 22:27, Ganesh Sittampalam wrote:
> Hi,
> I'd like to announce a first preview release of a new 'rebase' feature
> for darcs.
> As a first preview, it comes with the obvious caveats about eating your
> repository etc etc.
> I intend to keep his feature on a branch for quite a while, in part so
> that I can "dogfood" it to keep the branch up to date, and in part to
> avoid it ending up in a release before it's ready.
> Please see http://wiki.darcs.net/Ideas/RebaseStatus for instructions on
> download and use.
> Please do send as much feedback as you can. There's lots I know I need
> to do, but also a lot of uncertainty around how the UI should behave.

I just tried this out, using a local branch of GHC with a sequence of 9 
fairly large local patches, which was a couple of months behind the main 
trunk.  I had about 500 patches to pull, of which a sequence of 12 were 
in conflict with my local changes.

Overall, it went very smoothly - I completed the merge in less than an 
hour, and all the conflicts I was presented with looked reasonable. 
'darcs check' after the merge succeeded.  So this is great! There's no 
way I could have completed this merge without rebase.  However, the 
workflow has some unnecessary steps and I think could be cleaned up a 
bit, which would make things even smoother; various points I noted along 
the way are below.


I have 'pull --skip-conflicts' in my ~/.darcs/defaults, and this seems 
to apply to 'darcs rebase pull' too, which it probably shouldn't (I'd 
like to specify defaults for rebase pull separately).

This one would have helped me most: as far as I can tell 'rebase 
unsuspend' doesn't understand --skip-conflicts: it would be really 
useful if it did, so that I could amend-record the conflicting patch and 
then unsuspend all the remaining non-conflicting patches.  I suppose 
what I really want is '--one-conflict', which would unsuspend all the 
non-conflicting patches and at most one conflicting patch (I like to 
deal with conflicts one at a time, my brain can't cope with any more).

The conflict markers are substantially less than helpful, but we knew 
this already.  What would make it much easier is to have a simple way to 
show the 3 versions (or original + 2 diffs) in each conflict, clearly 
annotated with which is which.

The message "The following local patches are in conflict:" is printed 
even if there are no local patches in conflict.

What happens if you don't say 'y' to suspend all the patches that you 
are presented with, during 'darcs rebase pull'?  Would it be possible to 
recover from doing that by accident?

The patches to suspend seem to be presented in reverse order: if I 
unsuspend I get them in the other order.

'rebase pull' is a bit slow: about 15s to completion after asking which 
patches to suspend.


More information about the darcs-users mailing list