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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ktsu.SvnToGit.Core" Version="1.0.15" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ktsu.SvnToGit.Core" Version="1.0.15" />
                    
Directory.Packages.props
<PackageReference Include="ktsu.SvnToGit.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ktsu.SvnToGit.Core --version 1.0.15
                    
#r "nuget: ktsu.SvnToGit.Core, 1.0.15"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ktsu.SvnToGit.Core@1.0.15
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ktsu.SvnToGit.Core&version=1.0.15
                    
Install as a Cake Addin
#tool nuget:?package=ktsu.SvnToGit.Core&version=1.0.15
                    
Install as a Cake Tool

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:

  1. Clone — runs git svn clone <svn-path> <git-path> --stdlayout, with optional --authors-file and --preserve-empty-dirs.
  2. Cleanup refs — converts the remote git-svn branches into local Git branches.
  3. Finalize — runs git gc --aggressive.
  4. 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-svn support on the PATH.
  • 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 ExcludeTags and ExcludeBranches fields are accepted in the prompts but are not currently passed through to git svn — see open issues.

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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))