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'