Patch from Issue 2589, by Evan Martin: abstract out subversion calls. I tweaked Evan's code slightly to make it a new-style class and raise NotImplementedError() instead of RuntimeError().  I also fixed one place where there was a bogus "raise NotImplemented()" in the existing code.
Patch from Issue 2589, by Evan Martin: abstract out subversion calls.
I tweaked Evan's code slightly to make it a new-style class and raise
NotImplementedError() instead of RuntimeError().  I also fixed one place
where there was a bogus "raise NotImplemented()" in the existing code.

riannucci/rietveldv2,riannucci/rietveldv2,nicko96/Chrome-Infra,nicko96/Chrome-Infra,nicko96/Chrome-Infra,nicko96/Chrome-Infra,nicko96/Chrome-Infra