Skip to content

feat(svn): add first-class Subversion support - #3796

Open
Raymondriter wants to merge 5 commits into
rtk-ai:developfrom
Raymondriter:feat/svn-support
Open

Raymondriter wants to merge 5 commits into
rtk-ai:developfrom
Raymondriter:feat/svn-support

Conversation

@Raymondriter

@Raymondriter Raymondriter commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Add a dedicated rtk svn command with conservative svn log compaction and exact passthrough for unsupported, detailed, structured, search, and mutating shapes.
  • Preserve enterprise-facing behavior: explicit limit/revision/change windows, authentication and certificate prompts, successful stderr warnings, native exit codes, localized output, and complete streaming above the capture cap. Redact credentials from SVN's verbose and command-tracking labels.
  • Register only filterable text logs for hook rewriting, add real-SVN fixtures and process-level tests, and document the initial coverage boundary.

Closes #3795.

Initial behavior

  • Bare svn log defaults to 10 revisions and emits a recovery hint when the limit is reached.
  • -l/--limit, -r/--revision, and -c/--change remain caller-controlled.
  • Structurally proven 72-dash record separators are removed; displayed headers, complete messages, blank lines, CRLF, localized line-count nouns, and separator-shaped message content are preserved.
  • svn status, svn diff, global-option-first invocations, and unknown or mutating subcommands are native passthrough.
  • --xml, --incremental, --diff, --quiet, --verbose, merge-history, revision-property, and search log shapes are native passthrough and are not hook-rewritten.
  • Stderr is relayed by raw chunk while stdin is inherited so prompts without a newline remain visible.
  • Output above 10 MiB switches to complete native streaming rather than truncating.

Test plan

Verification refreshed September 29, 2026, at 6d65ca6, after merging current develop. The refresh resolves routing conflicts after upstream renamed the Git command module, restores the SVN module declaration, and reuses the shared signal relay for the custom log capture path.

  • cargo fmt --all -- --check
  • git diff --check
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo test --all --quiet: 3,842 unit tests passed, 8 ignored; all integration suites passed
  • Six SVN process tests pass, including SIGINT/SIGTERM cancellation, child reaping, escalation for a child that ignores termination, prompt-before-stdin behavior, byte-preserving failure output, and complete over-cap streaming
  • bash scripts/check-test-presence.sh upstream/develop

Private review's cancellation finding is fixed: the filtered SVN child receives the cancellation signal and is reaped, and RTK preserves signal termination after collecting output. No hosted CI pass or maintainer approval is claimed.

Baseline and scope

The previous PHPT compile blocker was fixed upstream in a419e691 and is now inherited through the develop merge. No separate PHPT repair is part of this feature's diff. The published SVN commit is preserved; the refresh adds a signed-off merge commit without rewriting branch history.

Local verification is complete. GitHub-hosted CI and maintainer review are still required before merge; the previous fork CI run awaited maintainer approval.

Safe SVN diff compaction remains deliberately deferred; #3769 and #3788 track adjacent unified-diff region work. This PR only compacts supported text logs.

Signed-off-by: Raymond Riter <rpr2998@gmail.com>
@CLAassistant

CLAassistant commented Sep 1, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

Signed-off-by: Raymond Riter <rpr2998@gmail.com>
@Raymondriter
Raymondriter marked this pull request as ready for review September 4, 2026 14:46
Signed-off-by: Raymond Riter <rpr2998@gmail.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Raymondriter

Copy link
Copy Markdown
Contributor Author

Brought this up to date with current develop (merged; the only conflict was a doc line in src/cmds/git/README.md, kept both sides). cargo fmt --all --check, cargo clippy --all-targets and cargo test all pass locally, and I re-ran a manual check against a local SVN 1.14 repo (svn log default limit + hint, -l window, svn status passthrough). Would appreciate a review when you have a moment — happy to squash or split out the docs/discover-registry pieces if a smaller diff is easier to review.

Signed-off-by: Raymond Riter <rpr2998@gmail.com>
Signed-off-by: Raymond Riter <rpr2998@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(svn): add first-class Subversion support

2 participants