We need a loader for Darcs repositories.
Given the peculiarities of the Darcs patch model, supporting it might entail changes in our data model (please add them as subtasks if needed).
We need a loader for Darcs repositories.
Given the peculiarities of the Darcs patch model, supporting it might entail changes in our data model (please add them as subtasks if needed).
As a starting point, I've briefly discussed with Darcs developers how the push/pull protocol works in Darcs. Unfortunately the protocol doesn't seem to be documented anywhere. The relevant entry points in the code are:
Furthermore, tags in Darcs apply to whole repositories, rather than to specific point in the development history (as it happends in git). As a consequence, tags are also used as synchronization points during push/pull: when Darcs finds that client/server both have the same tag, it stops traversing the patch set below the tag. This is somehow hinted at also by the documentation of darcs tag, which reads:
Tagging also provides significant performance benefits: when Darcs reaches a shared tag that depends on all antecedent patches, it can simply stop processing.
OTOH, darcs developers have confirmed that, when no tags are present, client/server exchange the full list of patches to find out what needs to be transferred.