ktsu.SvnToGit.Core
1.0.15
Prefix Reserved
dotnet add package ktsu.SvnToGit.Core --version 1.0.15
NuGet\Install-Package ktsu.SvnToGit.Core -Version 1.0.15
<PackageReference Include="ktsu.SvnToGit.Core" Version="1.0.15" />
<PackageVersion Include="ktsu.SvnToGit.Core" Version="1.0.15" />
<PackageReference Include="ktsu.SvnToGit.Core" />
paket add ktsu.SvnToGit.Core --version 1.0.15
#r "nuget: ktsu.SvnToGit.Core, 1.0.15"
#:package ktsu.SvnToGit.Core@1.0.15
#addin nuget:?package=ktsu.SvnToGit.Core&version=1.0.15
#tool nuget:?package=ktsu.SvnToGit.Core&version=1.0.15
ktsu.SvnToGit
A guided .NET 10 CLI that migrates a Subversion repository to Git, wrapping git svn with an interactive Spectre.Console front-end.
What it does
SvnToGit.ConsoleApp is a menu-driven TUI that walks a user through:
- Clone — runs
git svn clone <svn-path> <git-path> --stdlayout, with optional--authors-fileand--preserve-empty-dirs. - Cleanup refs — converts the remote
git-svnbranches into local Git branches. - Finalize — runs
git gc --aggressive. - Report — exit status with the path of the new Git repository.
Built on top of git svn, so anything git svn can do, this tool can do — but with a guided front end, validation, and progress reporting via Spectre.Console.
Prerequisites
- Git with
git-svnsupport on thePATH. - An SVN repository reachable as a local path or URL.
- Disk space for the cloned Git repo.
- .NET 10 SDK.
Installation
This repository ships two projects:
SvnToGit.ConsoleApp— the runnable TUI.SvnToGit.Core— the migration library (SvnToGitMigrator) that the CLI consumes; reusable in other apps.
git clone <repo>
cd SvnToGit
dotnet build
Usage
dotnet run --project SvnToGit.ConsoleApp
The TUI presents four options:
| Option | Effect |
|---|---|
migrate |
Run the full migration, prompting for paths. |
validate |
Validate the configured paths and exit without migrating. |
help |
Built-in help, including the authors-file format. |
exit |
Quit. |
Configuration prompts (during migrate)
| Prompt | Required | Notes |
|---|---|---|
| SVN repository path | yes | Local path or URL. |
| Git repository path | no | Defaults to <svn-dir>-git. |
| Authors file | no | One mapping per line: svnuser = Full Name <email@example.com>. |
| Preserve empty directories | no | Defaults to yes. |
| Advanced options | no | Toggles exclude-tags / exclude-branches lists. |
The
ExcludeTagsandExcludeBranchesfields are accepted in the prompts but are not currently passed through togit svn— see open issues.
Related
KtsuTools exposes a non-interactive flag-driven version of the same migration as ktsu svn-migrate. This repo's TUI is the canonical interactive experience.
License
MIT License. Copyright (c) ktsu.dev
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- ktsu.RunCommand (>= 1.4.25)
-
.NETStandard 2.1
- ktsu.RunCommand (>= 1.4.25)
-
net10.0
- ktsu.RunCommand (>= 1.4.25)
-
net5.0
- ktsu.RunCommand (>= 1.4.25)
-
net6.0
- ktsu.RunCommand (>= 1.4.25)
-
net7.0
- ktsu.RunCommand (>= 1.4.25)
-
net8.0
- ktsu.RunCommand (>= 1.4.25)
-
net9.0
- ktsu.RunCommand (>= 1.4.25)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.15 | 69 | 8/11/2026 |
| 1.0.14 | 116 | 7/3/2026 |
| 1.0.13 | 110 | 7/2/2026 |
| 1.0.12 | 108 | 7/1/2026 |
| 1.0.11 | 107 | 6/30/2026 |
| 1.0.10 | 113 | 6/29/2026 |
| 1.0.9 | 108 | 6/28/2026 |
| 1.0.8 | 115 | 6/28/2026 |
| 1.0.7 | 117 | 6/12/2026 |
| 1.0.6 | 110 | 6/12/2026 |
| 1.0.6-pre.1 | 91 | 2/17/2026 |
| 1.0.5 | 138 | 2/16/2026 |
| 1.0.5-pre.1 | 80 | 2/16/2026 |
| 1.0.4 | 127 | 2/14/2026 |
| 1.0.3 | 127 | 2/14/2026 |
| 1.0.3-pre.3 | 85 | 2/6/2026 |
| 1.0.3-pre.2 | 92 | 2/5/2026 |
| 1.0.3-pre.1 | 96 | 2/3/2026 |
| 1.0.2 | 138 | 1/31/2026 |
| 1.0.1 | 135 | 1/31/2026 |
## v1.0.15 (patch)
Changes since v1.0.14:
- chore: update ktsu.Sdk to 2.21.1 [patch] ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.14 (patch)
Changes since v1.0.13:
- Bump Spectre.Console and Spectre.Console.Ansi ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.13 (patch)
Changes since v1.0.12:
- Bump the ktsu group with 2 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.12 (patch)
Changes since v1.0.11:
- Bump the ktsu group with 10 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.11 (patch)
Changes since v1.0.10:
- Bump Polyfill from 10.11.1 to 10.11.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump the ktsu group with 2 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.10 (patch)
Changes since v1.0.9:
- Bump Polyfill from 10.11.0 to 10.11.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump the ktsu group with 10 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.9 (patch)
Changes since v1.0.8:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.8 (patch)
Changes since v1.0.7:
- chore: remove merge conflict markers from package versions ([@matt-edmondson](https://github.com/matt-edmondson))
- chore: remove SourceLink package versions from central props ([@matt-edmondson](https://github.com/matt-edmondson))
- fix: resolve package reference merge conflicts ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.7 (patch)
Changes since v1.0.6:
- Bump the ktsu group with 2 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.6 (patch)
Changes since v1.0.5:
- Regenerate TAGS.md with NuGet package tags ([@matt-edmondson](https://github.com/matt-edmondson))
- docs: replace placeholder README with usage and configuration reference ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.6-pre.1 (prerelease)
No significant changes detected since v1.0.6.
## v1.0.5 (patch)
Changes since v1.0.4:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.5-pre.1 (prerelease)
No significant changes detected since v1.0.5.
## v1.0.4 (patch)
Changes since v1.0.3:
- Remove legacy build scripts ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.3 (patch)
Changes since v1.0.2:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.3-pre.3 (prerelease)
Changes since v1.0.3-pre.2:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.3-pre.2 (prerelease)
Changes since v1.0.3-pre.1:
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.3-pre.1 (prerelease)
No significant changes detected since v1.0.3.
## v1.0.2 (patch)
Changes since v1.0.1:
- compitibility suppressions ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.1 (patch)
Changes since v1.0.0:
- Enhance project structure and code clarity by updating project files, adding parallelization support, and refining variable declarations for improved readability. ([@matt-edmondson](https://github.com/matt-edmondson))
- migrate to dotnet 10 ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor migration progress and result records to use primary constructors ([@matt-edmondson](https://github.com/matt-edmondson))
- Update .editorconfig, .gitignore, and .runsettings for improved configuration; adjust package versions in Directory.Packages.props; enhance PSBuild.psm1 for better test coverage and release workflow; update global.json for SDK versioning. ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.1-pre.6 (prerelease)
Changes since v1.0.1-pre.5:
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.1-pre.5 (prerelease)
Changes since v1.0.1-pre.4:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.1-pre.4 (prerelease)
Changes since v1.0.1-pre.3:
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.1-pre.3 (prerelease)
Changes since v1.0.1-pre.2:
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .specstory\.gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.1-pre.2 (prerelease)
Changes since v1.0.1-pre.1:
- Update .editorconfig, .gitignore, and .runsettings for improved configuration; adjust package versions in Directory.Packages.props; enhance PSBuild.psm1 for better test coverage and release workflow; update global.json for SDK versioning. ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.1-pre.1 (prerelease)
No significant changes detected since v1.0.1.
## v1.0.0 (major)
- Add .cursorignore and Directory.Packages.props for centralized package management; create global.json for SDK versioning; implement SvnToGit migration logic in new ConsoleApp; remove obsolete projects and files. ([@matt-edmondson](https://github.com/matt-edmondson))
- Add .cursorindexingignore and .gitignore files; remove obsolete SvnToGit.App and SvnToGit.CLI projects; add new SampleApp in SvnToGit.ConsoleApp ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial commit for SvnToGit ([@matt-edmondson](https://github.com/matt-edmondson))