darcs-2.11.0: a distributed, interactive, smart revision control system

Safe HaskellNone

Darcs.Patch.Rebase.Item

Synopsis

Documentation

data RebaseItem p wX wY where

A single item in the rebase state consists of either a patch that is being edited, or a fixup that adjusts the context so that a subsequent patch that is being edited "makes sense".

ToEdit holds a patch that is being edited. The name (PatchInfo) of the patch will typically be the name the patch had before it was added to the rebase state; if it is moved back into the repository it must be given a fresh name to account for the fact that it will not necessarily have the same dependencies as the original patch. This is typically done by changing the Ignore-This junk.

Fixup adjusts the context so that a subsequent ToEdit patch is correct. Where possible, Fixup changes are commuted as far as possible into the rebase state, so any remaining ones will typically cause a conflict when the ToEdit patch is moved back into the repository.

Constructors

ToEdit :: Named p wX wY -> RebaseItem p wX wY 
Fixup :: RebaseFixup p wX wY -> RebaseItem p wX wY 

simplifyPush :: (PrimPatchBase p, Commute p, FromPrim p, Effect p) => DiffAlgorithm -> RebaseFixup p wX wY -> FL (RebaseItem p) wY wZ -> Sealed (FL (RebaseItem p) wX)

Given a list of rebase items, try to push a new fixup as far as possible into the list as possible, using both commutation and coalescing. If the fixup commutes past all the ToEdit patches then it is dropped entirely.

simplifyPushes :: (PrimPatchBase p, Commute p, FromPrim p, Effect p) => DiffAlgorithm -> FL (RebaseFixup p) wX wY -> FL (RebaseItem p) wY wZ -> Sealed (FL (RebaseItem p) wX)

Like simplifyPush but for a list of fixups.

countToEdit :: FL (RebaseItem p) wX wY -> Int