
We can't even do this reliably with darcs. Several times I've tried to unpull one of Simon's patches to work around a bug, and the dependencies end up being more than just the textual dependencies. Then I have to fall back to unpulling by date, which is what git would do. And then sometimes there's the separate problem that you have to retreat the library repos too, and there you have to unpull by date and some guesswork too.
Perhaps it is possible to take the guesswork out of this latter problem? For all the repos to be linked, maintain a single file "patch-history.txt", add a posthook to all repos so that every commit will be logged as a line in patch-history.txt: repo-id : patch-id : short commit message, or other greppable info Then, if you have a patch id in the GHC repo, you just have to search backward from that id in patch-history.txt until you have matching last-patch ids for the other repos. That search (and darcs-all (un-)pulling up to the patch ids for all repos) could probably be scripted, so it would become a single command (input: repo-id/patch-id for a patch in one of the repos; output: list of repo-ids/patch-ids identifying a consistent set of repo states). Could that be made to work? Claus