
Luke Palmer wrote:
On Fri, Aug 1, 2008 at 3:45 PM, Eric Kow
wrote: "I would contribute to darcs if only..."
I haven't used darcs much, so it's possible that I'll be forced to start contributing by my own binding hypothetical.
I would contribute to darcs if only it had support / could have support for splitting and merging repositories. For example, I like to work in a big repository of all my stuff ever, because most of the things I do rarely exceed an experiment in one file. But once something does get big enough to be interesting, I want to split it off into its own repository. But that's just the use case: doing it the git way (go through all patches, discard irrelevant ones, filter relevant ones, thus losing all correlation with the original repository) is not going to inspire me; I'd like to see support for it in the beautiful patch theory.
I have once proposed a scheme that would nicely solve this. The naive way to emulate your split feature would be to create a branch where you delete all the stuff you don't want and then maybe move the subproject to a new directory (nearer the top-level). This doesn't work, however, at least not in practice. This is because deletion of a file conflicts with a change to the same file which leads to a huge amount of conflicts each time you pull from the old combined repo. And the reason you get these conflicts is that in darcs a file always gets emptied before deletion, and this is because changing a file depends on its existence in the first place. I proposed to change this and allow changes to non-existing files, so called 'ghosts'. This has a number of interesting consequences, among them that you could delete as many files as you want and will never again get a conflict with changes to those files (that is, unless you explicitly 'resurrect' the ghost). Unfortunately few people (and none of the core-developers) seemed to be interested :( The small thread that developed on the darcs-users list should still be available in the archives if you are interested in the details. Cheers Ben