Some thoughts on Darcs

It think it’s safe to assume the darcs experiment is a success, but I think we’ve been neglecting to think about how the missing pieces fit together — the web site, papers and the building of documentation.

Well, it’s probably time for us to stick our heads above the parapet…

To this end I have started a new repository called ‘epigram’ (shock horror) and I have applied all of the ‘term’ patches to it (followed by a new patch which moved all of the code into a subdirectory called ’src’). To switch over you can do

make clean && darcs pull e-pig.org:/home/darcs/epigram

which will leave you with a folder called term still, try renaming it to ‘epigram’ or, possibly safer, get a brand new copy from the same place — make sure your first subsequent push in either case is to the above location!

darcs push --apply-as darcs e-pig.org:/home/darcs/epigram

we also have an Epigram darcsweb all to our own. And more appropriate links

Now some questions…

  • How to deal with the website (which was previously edited under CVS) — not sure about this yet.
  • Where do papers go, there is the suggestion that if they go in the main repo then the sheer number of patches could cause problems, plus there would be no way to grab the source of just one paper without getting the whole system to boot. One solution is to have a repo for each paper (publically visable in darcsweb) plus a placeholder for papers in the main repo containing a list of all the papers and a script to grab the sources of all, or a select bunch, of them — and subsequently pull appropriate patches. This follows much the same pattern as ghc’s libraries.
  • How to rebuild EpiTome, documentation, etc. for the web? Post hooks are useful in this respect but my thoughts are that rebuilding every single time could become problematic, my idea is to have a push create an empty file somewhere and then have a cron script look for the file hourly, delete it and run the build, replacing the old copies if sucessful and if not writing out an error log (where to? who knows — we need to know quickly if things aren’t working) and leaving the old versions be.

What I have done so far is the most I could do without making these decisions, everything is undoable up to this point. So, thoughts, people?

Leave a Reply