Historically, I've kept a lot of data for quite a few projects in monotone. I kept it all in one big database. This works well, until a few things started happening.
- I hit the the magic 2GiB mark where offset_t wraps unless _FILE_OFFSET_BITS=64 was defined at compile time.
- One of my servers crashed during a sync operation, and the on-disk database had a corrupted packet.
So, I decided to start keeping all of the different branches in their own databases, and using monotone usher to proxy for them.
However, with 40 branches this is a bit of a maintenance problem. So I created some automation to template out runit runfiles and an usher config file. These run files include running usher, doing period db_checks, and syncing to other servers for a particular branch.
The scripts can be found in the org.mudshark.jack.proj.mtn-metaserver branch on the mudshark.org monotone server. The README file contains setup information.
Note: the db_check runfiles currently don't work, because I'm having trouble authenticating to the usher admin interface in order to shut down the servers so they can be fscked.