Pushmi

Subversion replication system based on SVK

Chia-liang Kao / 高嘉良 <clkao@clkao.org>

Best Practical Solutions, LLC

Modern Software Development

  • Test-driven.

  • Geographically distributed.

  • Version control is crucial.

Subversion

  • Enterprise-standard for distributed development.

  • Fixed CVS problems.

  • Branch is easy.

  • However

    • Centralised.

    • No good merge support.

The Problem

  • The Internet isn't as fast as we want it to be

  • ... or isn't as reliable as we thought.

  • and there can be...

Earthquakes

067.jpg

The Subversion Motto

  • Network is expensive

  • Disks are cheap

We think

  • Network, Disks, CPUs are cheap

  • Developers are expensive

Why this matters?

  • Developers spent more time on the tools than development == BAD

  • Single Point of Failure == BAD

  • Developers Unable to Produce == WORSE

The Solution

  • Pushmi creates replicas of master repository in branch offices.

  • Transparent to the users.

  • NO change to existing infrastructure and process.

  • Too good to be true?

Conflicts?

FAQ: How do you handle simultaneous commits from different slaves and master?

  • We don't.

  • The commits are relayed back to the master.

  • It's essentially like users are committing directly, without going through replicas.

  • And Subversion guards the transaction cleanness for us.

The architecture

diagram-v3.png

Case Study

A leading company in the game industry

  • 70 offices around the world

  • ... including Beijing, Saigon.

  • Some with very limited internet connection.

  • Large amount of graphical data.

  • Users wait for "svn update" over slow and saturated network.

Case Study (Cont.)

  • Eliminated 200ms+ latency for read-only operations from places like Romania

  • ... for update, viewing logs, diff, etc.

  • Commit performance is only slightly slower.

  • When master repository or VPN is down:

    • Developers can still work with read-only operations.

    • along with SVK, can also commits and perform merge later.

Questions?

Thank you

Available on code.bestpractical.com

For support and consultancy, contact sales@bestpractical.com

4 POD Errors

The following errors were encountered while parsing the POD:

Around line 6:

Non-ASCII character seen before =encoding in 'B<高嘉良>'. Assuming CP1252

Around line 82:

Deleting unknown formatting code G<>

Around line 179:

Deleting unknown formatting code G<>

Around line 241:

You forgot a '=back' before '=head1'