RFC: migrating to git
claus.reinke at talk21.com
Wed Jan 12 10:42:21 CET 2011
> 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?
More information about the Glasgow-haskell-users