RFC: Subversion support and phased upstream contribution plan #1068
Replies: 3 comments 1 reply
|
|
Thanks for the detailed RFC and the fork implementation — clearly a lot of effort went into this. That said, SVN support is unlikely to land in the main trunk in the near term. The main reason:
The more practical issue is that Git and SVN have non-trivial semantic differences (revision model, branching model, working-copy state machine). It is not a matter of swapping one CLI for another. We still have a lot of work ahead on the Git ecosystem side (GitHub/GitLab/Codeup/Gerrit CI integration, session resume, VS Code extension, etc.), and with limited bandwidth we would rather not spread into a direction where the user base is shrinking. Suggestions:
Again, appreciate your willingness to contribute — this is purely a roadmap trade-off, not a judgment on work quality. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Context
Issue #1017 started with a straightforward question: could OpenCodeReview support Subversion? The follow-up comments brought a practical use case into focus. Teams working with SVN, especially in hardware and embedded development, need local working-copy reviews as well as reviews around repository revisions and remote merge workflows.
OpenCodeReview's review flow touches diff loading, historical content, search tools, session identity, delegate output, and editor integration. SVN support reaches across all of those layers, so it feels worth agreeing on the behavior and delivery plan before preparing upstream PRs.
I have put together and validated a working proof of concept in my fork. I would love to align it with the maintainers' expectations and reshape it into reviewable upstream contributions.
Proposed Semantics
Here is the behavior implemented by the proof of concept:
rN-1torN; revision0uses an empty baseline.svnexecutable and keep the public Go dependency surface the same.Proposed Upstream Delivery
I would like to keep #1017 as the umbrella issue and give each accepted phase its own upstream issue and focused PR:
The PRs can land one at a time. After one phase is merged, the next branch can start from the latest upstream
main. Each PR would:Part of #1017and close its corresponding child issue.If three broader phases would feel easier to review and maintain, I can reshape the plan around that preference as well.
Proof of Concept
The completed fork implementation provides a concrete reference for the design and test coverage:
Validation covered a real local SVN repository and working copy, workspace/range/remote-target command flows, the full Go race suite, the repository coverage gate (90.5%), Git compatibility, VS Code tests and production builds, host-agent plugin tests, documentation tests, and checks that keep remote URLs within runtime routing.
For upstream, each phase can be recut on the latest
main, narrowed to the agreed scope, and adjusted as review feedback comes in.Questions for Maintainers
I would really appreciate the maintainers' guidance here. Once we have a shared direction, I can prepare the first child issue and upstream PR around the agreed milestone.
All reactions