[darcs-users] rebase: initial preview release

Simon Marlow marlowsd at gmail.com
Wed Aug 25 12:00:31 UTC 2010


On 20/08/2010 10:44, Simon Marlow wrote:
> 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.

A bit more: I just successfully used rebase to do a "deep rollback", 
i.e. create a partial rollback of a patch on which other patches are 
depending, because 'darcs rollback' won't allow you to do that normally.

I don't think the instructions for deep amend-record are correct: the 
wiki says to do

darcs rebase suspend --patch 'patchname'

but I get

darcs failed:  unrecognized option `--patch'

So I just did 'darcs rebase suspend' and interactively selected the 
patches to suspend.

Cheers,
	Simon


More information about the darcs-users mailing list