darcs-beta- a distributed, interactive, smart revision control system



Conflictor patches



data RealPatch whereSource

Duplicate x: This patch has no effect since x is already present in the repository

Etacilpud x: invert (Duplicate x)

Normal prim: A primitive patch

Conflictor ix xx x: ix is the set of patches:

  • that conflict with x and also conflict with another patch in the repository
  • that conflict with a patch that conflict with x

xx is the sequence of patches that conflict *only* with x

x is the current patch

ix and x are stored as Non objects, which include any necessary context to uniquely define the patch that is referred to.

InvConflictor ix xx x: like invert (Conflictor ix xx x)

is_consistent :: RealPatch -> Maybe DocSource

This is used for unit-testing and for internal sanity checks

is_forward :: RealPatch -> Maybe DocSource

This is only used for unit testing

is_duplicate :: RealPatch -> BoolSource

is_duplicate p is ' True if p is either a Duplicate or Etacilpud patch

pullCommon :: Patchy p => FL p -> FL p -> Common pSource

pullCommon xs ys returns the set of patches that can be commuted out of both xs and ys along with the remnants of both lists