

A better backup system based on Git - mqt
http://eigenclass.org/hiki/gibak-backup-system-introduction

======
phaedrus
Thanks! I've been looking for a backup tool.

Linus Torvalds uses git for Linux. Linus is cool as well as Linux is cool. So
is finding unintended uses for things. Therefore, if I use this gibak program,
I'll be cool^3.

It's simple math.

------
s3graham
Cool.

Would it be possible to push it to S3 too? I'm not familiar with the internal
structure of a git repo, would it involve reuploading the majority of the data
on a commit?

------
tel
This is a nice case study for OCaml.

~~~
mfp
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...](http://eigenclass.org/repos/gitweb?p=gibak.git;a=blob;f=ometastore.ml;h=cfcdc3fd31c1c80133dde17667288174f16da76d;hb=eae04a9f68c259ef76332c5d6f2b5a914ba4a886)
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.

