Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This is a nice case study for OCaml.


The code has grown and become more complex in the last versions because I optimized it until directory traversal + glob matching got sensibly faster than Git's own (git-ls-files --exclude-standard doesn't do exactly the same thing as find-git-files, but meaningful performance comparisons can be done with the -d -o and -m -o options). It's still much smaller than metastore (1/3rd or so) even though it does much more now, however.

You can take a look at the initial version of ometastore here: http://eigenclass.org/repos/gitweb?p=gibak.git;a=blob;f=omet... The functionality from metastore takes ~270 lines vs. ~1500 lines of C, the support for .gitignore takes another 70locs.

It's got one or two bugs in the Gitignore support which I fixed later (and a silly bug in do_finally), but this code is simpler if you want to see what OCaml looks like in actual use (for a system tool, in this case). It's almost (if not actually, I don't remember) the "first version that typed", by the way.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: