[darcs-users] rebase: initial preview release
marlowsd at gmail.com
Fri Aug 20 09:44:50 UTC 2010
On 17/08/2010 22:27, Ganesh Sittampalam wrote:
> 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