{"id":308,"date":"2004-10-01T19:26:40","date_gmt":"2004-10-01T09:26:40","guid":{"rendered":"http:\/\/www.erisian.com.au\/wordpress\/?p=308"},"modified":"2004-10-01T19:26:40","modified_gmt":"2004-10-01T09:26:40","slug":"hacking-at-darcs","status":"publish","type":"post","link":"https:\/\/www.erisian.com.au\/wordpress\/2004\/10\/01\/hacking-at-darcs","title":{"rendered":"Hacking at darcs"},"content":{"rendered":"<p>After a little more <a href=\"http:\/\/azure.humbug.org.au\/~aj\/blog\/2004\/09\/28#2004-09-28-darcs\">looking at darcs<\/a>, I think I&#8217;m willing to live with its flaws. I don&#8217;t think I mind the lack of a nice repository for long-term storage &#8212; I haven&#8217;t managed to grow to like any of the others I&#8217;ve seen (cvs, tla, subversion, aegis), anyway. Tarballs will do in the meantime, and not having to worry about a heavy-weight repository when I don&#8217;t want to is cool.<\/p>\n<p>Not having support for metadata (timestamps, permissions, or ownership) does still concern me though, so I decided to have a poke at darcs&#8217; internals to see if that can be fixed. That happens to mean I need to learn Haskell (which I&#8217;ve been meaning to do since 1997, admittedly), so maybe when Andrae continues his <a href=\"http:\/\/etymon.blogspot.com\/2004\/08\/bananas-lenses-envelopes-and-barbed_31.html\">programming theory blogging<\/a> I&#8217;ll actually be able to follow what he&#8217;s talking about. Scary.<\/p>\n<p>Anyway, Haskell&#8217;s a nice language to express darcs in; pattern matching definitely pays off, and monads do seem to keep the code reasonably clear. It&#8217;s still pretty complicated: reading three thousand lines of code implementing something you don&#8217;t understand in a language you don&#8217;t know, with an extended form of a grammar you&#8217;ve mostly forgotten anyway doesn&#8217;t make for a walk in the park. In any case, I think I grok it enough to think a <a href=\"http:\/\/www.abridgegame.org\/pipermail\/darcs-users\/2004-September\/003252.html\">fix for the metadata issue<\/a> is possible, and David Roundy (the darcs author) <a href=\"http:\/\/www.abridgegame.org\/pipermail\/darcs-users\/2004-September\/003278.html\">seems to largely agree<\/a>. Cool. Going from possible to patched isn&#8217;t trivial though.<\/p>\n<p>In the meantime, and given I&#8217;ve decided not to use darcs as a primary\/permanent\/public storage format (yay tarballs!), it seems like now&#8217;s a good time to check various things into darcs and see what happens. For regular programming it does seem like timestamps shouldn&#8217;t matter, and while not having execute bits might be annoying, I can certainly live without everything else.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After a little more looking at darcs, I think I&#8217;m willing to live with its flaws. I don&#8217;t think I mind the lack of a nice repository for long-term storage &#8212; I haven&#8217;t managed to grow to like any of the others I&#8217;ve seen (cvs, tla, subversion, aegis), anyway. Tarballs will do in the meantime, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[],"_links":{"self":[{"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/posts\/308"}],"collection":[{"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/comments?post=308"}],"version-history":[{"count":0,"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/posts\/308\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/media?parent=308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/categories?post=308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erisian.com.au\/wordpress\/wp-json\/wp\/v2\/tags?post=308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}