You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用git svn将SVN trunk下各目录转为独立GIT仓库

SVN子目录拆分迁移为独立Git仓库方案

核心思路

针对trunk下的每个子目录单独执行git svn克隆操作,手动指定对应子目录为拉取主干,同时禁用SVN分支、标签的拉取,最后重命名分支为符合要求的main分支即可。

前置准备

提前准备好SVN作者与Git作者的映射文件authors.txt,每行格式如下:
SVN用户名 = Git用户名 <Git邮箱地址>

单个子目录迁移步骤(以apps目录为例)

  1. 执行git svn克隆命令,仅拉取trunk/apps目录的内容,忽略所有分支和标签:
git svn clone --trunk=trunk/apps --no-tags --no-branches --authors-file=authors.txt https://mysvnrepo.com.br/svn/myapp/ c:/mygitrepo/apps

参数说明:

  • --trunk=trunk/apps:指定SVN仓库中trunk/apps路径作为Git仓库的唯一拉取源,克隆后只会保留该路径下的文件和对应的提交历史
  • --no-tags --no-branches:完全跳过SVN的tags、branches目录拉取,符合不需要其他分支和标签的需求
  1. 进入克隆后的本地Git仓库目录,将默认生成的trunk分支重命名为main:
cd c:/mygitrepo/apps
git branch -m trunk main

其余目录迁移

对site、services、scripts三个目录重复上述操作即可,仅需要替换克隆命令中--trunk参数后的路径和本地目标目录名,比如site目录的克隆命令为:

git svn clone --trunk=trunk/site --no-tags --no-branches --authors-file=authors.txt https://mysvnrepo.com.br/svn/myapp/ c:/mygitrepo/site

可选优化

如果SVN仓库提交历史过多,拉取速度慢,可以在克隆命令中加入-r <起始版本号>:HEAD参数,按需拉取指定版本范围的提交历史,比如从SVN版本号1200开始拉取的示例:

git svn clone -r 1200:HEAD --trunk=trunk/apps --no-tags --no-branches --authors-file=authors.txt https://mysvnrepo.com.br/svn/myapp/ c:/mygitrepo/apps

内容的提问来源于stack exchange,提问作者Marcelo The Mage Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:06:00