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

使用TortoiseGit转换EDK2本地SVN至Git时连接失败求助

本地SVN工作副本转Git同步的问题解决

问题说明

EDK2已从SVN迁移至Git,我想把本地SVN工作副本转换为Git版本库,以便和官方Git版本同步并合并本地修改,但执行以下命令时出现仓库连接错误:

git.exe svn clone "file:///C/edk/edk2" "C:\edk\edk2-git\edk2" -T trunk -b branches -t tags

错误输出:

Can't create session: Unable to connect to a repository at URL 'file:///C/edk/edk2': Unable to open repository 'file:///C/edk/edk2' at C:/Program Files/Git/mingw64/share/perl5/Git/SVN.pm line 310.
git did not exit cleanly (exit code 1) (28781 ms @ 3/24/2024 1:44:47 PM)

我已补充svn status、ls -l、svn ls、git status、git ls-tree HEAD的输出信息,想确认该操作是否可行,是否遗漏了关键步骤。

分析与解决方案

1. 先排查路径有效性

你用的file:///C/edk/edk2是否指向完整的SVN仓库根目录?注意:git svn clone需要的是包含conf、db等子文件夹的SVN仓库核心目录,而不是你平时签出的SVN工作副本目录。如果C:\edk\edk2是工作副本,那路径直接错了,必须改为真正的SVN仓库路径(本地裸仓库或远程SVN服务器地址)。

2. 更稳妥的转换流程(不建议直接用git svn克隆工作副本)

直接从本地SVN工作副本通过git svn clone转换本身就不合理,因为工作副本不是完整仓库。推荐以下流程:

  • 步骤1:克隆官方Git仓库
    git clone https://github.com/tianocore/edk2.git C:\edk\edk2-git\edk2
    cd C:\edk\edk2-git\edk2
    
  • 步骤2:导出本地SVN修改
    在你的SVN工作副本目录下,生成差异补丁:
    svn diff > local_changes.patch
    
    或者直接备份所有修改过的文件。
  • 步骤3:将补丁应用到Git仓库
    把补丁文件复制到Git仓库目录,执行:
    git apply local_changes.patch
    
    若有冲突,手动解决后用git add标记冲突已处理。
  • 步骤4:提交并同步官方代码
    提交本地修改:
    git add .
    git commit -m "合并本地SVN修改"
    
    拉取官方最新代码并合并:
    git pull origin main
    
    (若官方主分支为master,替换为对应分支名)

3. 若坚持用git svn方式

如果一定要通过git svn转换,需满足:

  • 确保路径指向完整SVN仓库(比如当初用svnadmin create创建的目录);
  • 检查目录权限,保证Git进程能读取仓库内所有文件(尤其是db文件夹);
  • 先验证svn ls file:///C/edk/edk2能否正常输出内容,若该命令失败,说明路径或仓库本身有问题。

内容的提问来源于stack exchange,提问作者user3161924

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:42:17