
The main advantages to darcs are that it can manipulate the sequence of patches better than git.
The main advantage of git is that every version is accurately named. If two people have a commit with a given hash, they will have exactly the same files and history.
I've been wondering about this darcs disadvantage, and have a question: In my understanding, the unorderedness of patch history in darcs is there to make distributed repos easier (fewer constraints: same set of patches, but not same order; can mix local commits and pulls from various repos, no need for a central repo), and because darcs has a causal rather than a temporal view of patch history (which patch depends on which other patches, instead of which patch came first). Now, the GHC workflow does single out one central (set of) repo(s) that receives all patches that ever make it into production use. Currently, there is no requirement that all patches in remote repos come in via that central repo, so there is no ordering guarantee for remote repos, but darcs makes no efforts to permute the patches in the central repos. So, shouldn't it be possible to use the central repos as reference point for patch ordering? To restore an earlier combination of repo states, refer to the central repos, and their (otherwise irrelevant for darcs) ordering of patch history. darcs-all could then record/ restore the state of a set of repos, by referring to the relation of patches in the central version of these repos. And if one really wanted to enforce the same patch ordering on all repos, one could change the workflow: never mix local and common patches, always remove local patches after pushing to the central repos, then pull those patches again from the central repos (to get them in the same order as everyone else). In other words, always keep a branch/repo that only pulls from the central repos (no other source of patches). One could still have other branches/repos for development/testing, but the pristine copy of the central repos would reflect the reference order of patches (wouldn't it?). Would this help with the problem of finding a consistent set of older revisions of the GHC/library repos? Claus