'Lo.

First of all, because this doesn't get said enough: Thanks for fossil!
Been a happy user for three years now, and I love the approach taken to
UI simplicity and the focus on reliability and integrity. I have no
idea how I coped before having an integrated ticket system.

However, one aspect of fossil is really starting to become a problem:
Syncing large numbers of repositories.

I'm using what I believe is probably a common setup: I have a server on
my private network here containing the "canonical" repositories for all
my projects. I have clones of these repositories on all machines here,
and the repositories on the server are backed up nightly. I then have
public-facing repositories on io7m.com which are basically read-only
public mirrors of my own private repositores (I have no contributors):

  http://fossil.io7m.com

The io7m.com site is hosted by site5.com, using their standard shared
web hosting account. I have ssh access, but not root access. I cannot
run any long-running processes on it.

As the number of repositories has grown, this has become a real
problem. I first started using cron to sync repositories. After this
became unwieldly (due to the number of repositories and the way cron
would send me email every time fossil said anything), I ended up
writing a simple program to sync all repositories at staggered, random
intervals, sending email only if any sync failed. The servers at site5
appear to implement some sort of rate limiting: If you open too many
ssh connections in too short a time, they'll throttle and close
connections. In order to try to reduce the load on their side, I've
ended up using longer and longer staggered intervals (to the point
where I'm basically syncing any one repository less frequently than
hourly).

Now that the number of (public) repositories has grown to 32, even this
has become a problem: Due to the number of repositories, I'm still
opening too many connections to the server, and the number of
repositories is only going to grow. All I can do is keep trying to
increase the upper bound on the sync interval.

I believe the "sync periodically" approach is fundamentally wasteful,
and scales increasingly poorly when the number of repositories grows.
I'm basically burning through gigabytes of bandwidth (32 repositories,
24 hours a day soon adds up) even though I'm generally only committing
to one repository at a time, and nobody is making any changes to
repositories on the io7m.com side. Perhaps 95% of syncs are entirely
pointless!

What are my options here? I'd much rather sync on demand: When a
repository on my private server receives any artifacts, it should then
sync with the io7m.com side. This would massively reduce my own
bandwidth usage and would give the io7m.com servers a break. Is there
any way to achieve this, currently?

Regards,
Mark 
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to