darcs

Patch 2014 change rebase to store Prims

Title change rebase to store Prims
Superseder Nosy List ganesh
Related Issues
Status accepted Assigned To
Milestone

Created on 2020-03-05.12:34:33 by ganesh, last changed 2020-06-20.07:21:11 by bfrk.

Files
File name Status Uploaded Type Edit Remove
add-backwards-compatibility-tests-of-rebase-0_0-format.dpatch ganesh, 2020-05-04.20:29:43 application/x-darcs-patch
introduce-new-rebase-format.dpatch dead ganesh, 2020-03-05.12:34:32 application/x-darcs-patch
pEpkey.asc bfrk, 2020-03-06.21:33:56 application/pgp-keys
patch-preview.txt ganesh, 2020-03-05.12:34:32 text/x-darcs-patch
patch-preview.txt ganesh, 2020-05-04.20:29:43 text/x-darcs-patch
unnamed ganesh, 2020-03-05.12:34:32 text/plain
unnamed ganesh, 2020-05-04.20:29:43 text/plain
See mailing list archives for discussion on individual patches.
Messages
msg21966 (view) Author: ganesh Date: 2020-03-05.12:34:32
This builds on patch2008. I would also like to screen this soon.

The key patches are

  * use RebaseChange inside Suspended
  * use Named prim inside rebase

The rest are just ancillary cleanups etc.

After this bundle, the pending items (not ready to submit) are:

 - Moving to use SimpleConflict to communicate conflicts in
   unsuspended patches between the Rebase code and the rest of
   Darcs. I think this will move us a step closer to getting
   rid of fromAnonymousPrim.

 - Come to a final conclusion on the alternative representation
   that was called RebasePatch in my previous drafts. To recap,
   this was about whether we store fixups next to each primitive
   in a "to edit" patch. Now that we have fullUnwind, it's not
   necessary, and I think we shouldn't do it.

13 patches for repository darcs-unstable@darcs.net:screened:

patch 5bc9ce15457cf8e4c7a687684334c00683905aee
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:08:27 GMT 2020
  * introduce new rebase format
  
  The new rebase format is named rebase-2.16 on the assumption that
  it will be the one used in Darcs 2.16.
  
  The "new-style" format is now legacy, but still supported for
  upgrades so that repositories created during the 2.16 development
  cycle can be rescued.
  
  As of this patch, darcs-2.16 rebases are exactly the same format
  as new-style, but this will change without preserving backwards
  compatibility.

patch d21bec0e20ac76834ddebd17926431808c4a5f28
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:00 GMT 2020
  * introduce shim for new-style rebase
  
  This is just a newtype wrapper for now but will evolve
  to contain more of the existing code as that gets refactored.
  

patch ec5a8168c61acc7c35b289e737e951d2d0218307
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:29 GMT 2020
  * tests: remove some useless code resulting from copy+paste

patch db7971d45509835f773bfb54a0ff6b9e2037c7a0
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:00 GMT 2020
  * move D.P.Named.Wrapped into D.P.Rebase.Legacy namespace

patch 174d1bcbcb1a81170165f8cf44f05ef2b95ccc5a
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:00 GMT 2020
  * add read/show instances for RebaseChange
  
  This is in preparation for using RebaseChange in the rebase
  patch.
  
  It leads to some duplication with the ReadPatch/ShowPatch
  instances for RebaseItem, which will be cleaned up later.

patch a541fdf659408542ab9cf2d7b2b0d7d7189fe4d5
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:18 GMT 2020
  * use RebaseChange inside Suspended

patch 4d314afb6f215a23509c61a4b2b1d33ea5b7eaa8
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:18 GMT 2020
  * cleanups after switching to RebaseChange:
  
   - fromRebaseChange is now dead
  
   - toRebaseSelect is better named toRebaseChanges and is
     legacy-only
  

patch f6ba986b7edee79ec3e904144af721039bd2ddd9
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:18 GMT 2020
  * Darcs.Patch.Rebase.Item is now legacy-only

patch a95d752df325072f5f1dddaf0e08fa7d43d13cd4
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:18 GMT 2020
  * remove dead code/unneeded exports from D.P.R.Legacy.Item

patch 20f0e7f86f30e6f56cb69471dc1b2b7f2eeaeec7
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:18 GMT 2020
  * add comment about Read/Show for RebaseItem

patch 59d46efe0ccbfea72a54d1156c6d3f74d5fe508d
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:18 GMT 2020
  * rename D.P.Rebase.Viewing to D.P.Rebase.Change
  
  The module now only contains a single significant type (RebaseChange),
  and is no longer used just for viewing.

patch 4c634553e16198d82c11f65e7639ad34f40cb144
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:29 GMT 2020
  * use Named prim inside rebase
  
  Now that we unwind conflicts before putting them into
  rebase, the patches to be edited will now always be
  conflict-free.

patch 78ff0732f67f50708b6624a491b3f77ff02f9399
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Thu Mar  5 12:09:30 GMT 2020
  * remove some unnecessary instances from D.P.R.Legacy.Item
Attachments
msg21967 (view) Author: bfrk Date: 2020-03-06.21:33:56
> This builds on patch2008. I would also like to screen this soon.

Feel free to screen if you thing they are ready. At the moment I am not
able to take a closer look, but I trust it will all make sense to me
once I do. You have been working on this for quite a while and I guess
you know what you're doing.

> After this bundle, the pending items (not ready to submit) are:
> 
>  - Moving to use SimpleConflict to communicate conflicts in
>    unsuspended patches between the Rebase code and the rest of
>    Darcs. I think this will move us a step closer to getting
>    rid of fromAnonymousPrim.

I was going to say we're not going to get rid of that any time soon, but
I was wrong. I just checked and apart from a use in V2.Non rebase is
indeed the only remaining client of that API. Anyway before you move on
to work on that, let us first get the existing stuff settled.

>  - Come to a final conclusion on the alternative representation
>    that was called RebasePatch in my previous drafts. To recap,
>    this was about whether we store fixups next to each primitive
>    in a "to edit" patch. Now that we have fullUnwind, it's not
>    necessary, and I think we shouldn't do it.

I agree.
Attachments
msg21971 (view) Author: ganesh Date: 2020-03-06.22:19:07
On 06/03/2020 21:33, Ben Franksen wrote:

> Feel free to screen if you thing they are ready. At the moment I am not
> able to take a closer look, but I trust it will all make sense to me
> once I do. You have been working on this for quite a while and I guess
> you know what you're doing.

Thanks. I'll do so once we agree on how to handle the different formats.

>> After this bundle, the pending items (not ready to submit) are:
>>
>>  - Moving to use SimpleConflict to communicate conflicts in
>>    unsuspended patches between the Rebase code and the rest of
>>    Darcs. I think this will move us a step closer to getting
>>    rid of fromAnonymousPrim.
> 
> I was going to say we're not going to get rid of that any time soon, but
> I was wrong. I just checked and apart from a use in V2.Non rebase is
> indeed the only remaining client of that API. Anyway before you move on
> to work on that, let us first get the existing stuff settled.

I'm actually already working on it but I'll prioritise getting the right
approach to the legacy format. In any case I have realised that it's not
completely clear how to do conflict marking so I'll need a little while
to play with that and perhaps start a discussion.
msg22012 (view) Author: ganesh Date: 2020-05-04.20:29:44
This is the hopefully final version of switching rebase to
use prims. I'd like to screen it soon.

The upgrade path is now purely in the Suspended patch itself,
which goes from version 0.0 to 0.2. (0.1 is introduced and
then removed in this bundle.)

Apologies for this taking a while, there wasn't actually
much to do but I got busy for a bit and forgot the details
so then suffered from some inertia in getting back to it.

As discussed, this bundle doesn't touch the rebase "format"
in the sense of _darcs/format. I think we should try to sort
that out before 2.16 too, but it can be handled completely
independently of this.

10 patches for repository darcs-unstable@darcs.net:screened:

patch 9be103ad32bb8d74a8e3ccadbbd4adfa7875b220
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Sun Mar 22 23:15:35 GMT 2020
  * add backwards compatibility tests of rebase 0.0 format

patch 6b43a53e2771eb8c78ad79a956a66624622ebdc9
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Sun Mar 22 23:31:18 GMT 2020
  * add read/show instances for RebaseChange
  
  This is in preparation for using RebaseChange in the rebase
  patch.

patch 3e53f1ce4164ca67e075c2f004a5927f2b780036
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Sun May  3 18:08:11 BST 2020
  * tests: remove some useless code resulting from copy+paste

patch ee8757a82fd66385e5ece6edea7300a2c528d9e7
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Mon May  4 21:12:16 BST 2020
  * use RebaseChange inside Suspended
  
  This introduces rebase format 0.1, which is transitional
  and will be updated to 0.2 in a subsequent patch without an
  upgrade path from 0.1->0.2.
  
  Therefore no backwards compatibility tests are included for
  format 0.1.

patch cf524d54d05c62553aab049bceff1d7a56447aef
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Mon May  4 21:12:16 BST 2020
  * move D.P.Rebase.Item into a new Legacy namespace
  
  This reflects that it's only needed for reading format 0.0

patch 52370be062c790b5935713cca2785e87d6750765
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Mon May  4 21:12:16 BST 2020
  * rename D.P.Rebase.Viewing to D.P.Rebase.Change
  
  The module is now centred around the RebaseChange type only,
  and it's used more generally than just viewing.
  

patch 207a41f14d00b024589f004bb86434e189388c3d
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Mon May  4 21:12:16 BST 2020
  * clean up RebaseItem<->RebaseChange conversion code
  
  - move toRebaseSelect to D.P.R.Legacy.item and rename it
    to the more appropriate toRebaseChanges
  - drop unused fromRebaseChange
  

patch 7cd7824afe58d4a0770c979226d9866f021aaf48
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Mon May  4 21:12:16 BST 2020
  * cleanup unneeded things in D.P.R.Legacy.Item

patch 469c0c3155ca90758cbafbd57a68ced3e62b4025
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Mon May  4 21:12:16 BST 2020
  * move addEditsToRebase to D.P.Rebase.Change

patch 7939e5d0d6f9d43878ed395241dc704a05361c63
Author: Ganesh Sittampalam <ganesh@earth.li>
Date:   Mon May  4 21:16:57 BST 2020
  * use Named prim inside rebase
  
  Now that we unwind conflicts before putting them into
  rebase, the patches to be edited will now always be
  conflict-free.
Attachments
msg22014 (view) Author: bfrk Date: 2020-05-05.07:24:27
Go ahead and push them. I checked that they don't conflict with the
stuff I have been doing in the meantime (getting rid of the shelly
dependency, forward porting of changes I made on the branch-2.14).
History
Date User Action Args
2020-03-05 12:34:33ganeshcreate
2020-03-06 21:33:57bfrksetfiles: + pEpkey.asc
messages: + msg21967
2020-03-06 22:19:08ganeshsetmessages: + msg21971
2020-05-04 20:29:47ganeshsetfiles: + patch-preview.txt, add-backwards-compatibility-tests-of-rebase-0_0-format.dpatch, unnamed
messages: + msg22012
2020-05-05 07:24:29bfrksetmessages: + msg22014
2020-05-05 07:34:03ganeshsetstatus: needs-screening -> needs-review
2020-06-20 07:21:11bfrksetstatus: needs-review -> accepted