svn to git

SVN 仓库转 Git 仓库工具

Note

即使 SVN 仓库服务器端不存在了,只要本地副本是正常的,即可使用

Tip

使用 DeepSeekGitHub Copilot 辅助实现。

技巧

  • 查看最近的2条日志(当前执行目录需要有.svn目录)
    svn log -v --xml --stop-on-copy --limit 2 .
  • 查看 SVN 信息(当前执行目录需要有.svn目录)
    svn info .
    输出示例:
    Path: .
    Working Copy Root Path: E:\proj\XYZServer
    URL: https://192.168.1.9/svn/XXXProject/trunk/Program/XYZServer
    Relative URL: ^/trunk/Program/XYZServer
    Repository Root: https://192.168.1.9/svn/XXXProject
    Repository UUID: b8147fd3-b46e-104b-9fb4-0b9b9c2626ed
    Revision: 20786
    Node Kind: directory
    Schedule: normal
    Last Changed Author: user01
    Last Changed Rev: 12315
    Last Changed Date: 2025-06-30 18:10:09 +0800 (周一, 30 6月 2025)
    

编译

go mod tidy -v
build.cmd

运行说明

  1. run.cmd.example 拷贝为 run.cmd
  2. run.cmd 说明(可根据 svn info 命令的结果确定)
    • LOCAL_PATH: Working Copy Root Path
    • REPO_PATH: Relative URL 去掉开头的 ^/
    • SVN_BASE: Repository Root
    • GIT_TARGET: 希望创建 Git 仓库的目录
    • AUTHORS: 提交者文件列表, 格式与 git svn 命令所需的作者文件兼容, 示例参见 users.txt.example
    • GIT_EMAIL: 默认提交者邮箱(当提交者文件未提供或未找到时)
    • GIT_USER: 默认提交者用户名(当提交者文件未提供或未找到时)
  3. 执行 run.cmd, 等待完成即可