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

如何将Mercurial特定目录迁移至GitLab并保留提交历史?

用hg-fast-export迁移Mercurial单个目录到GitLab并保留提交历史

hg-fast-export完全支持仅导出指定目录/文件并保留对应提交历史,具体操作步骤如下:

操作步骤

  • 克隆原始Mercurial仓库到本地:

    hg clone <你的Hg仓库地址> hg-local-repo
    cd hg-local-repo
    
  • 创建filemap文件定义导出规则:
    在Hg仓库根目录下新建filemap.txt,写入目标目录的导出规则(替换成你实际要导出的目录相对路径):

    include path/to/target-directory
    

    注:如果需要明确排除其他所有内容,可追加exclude *,仅保留include规则即可实现只导出目标目录。

  • 初始化空Git仓库用于接收导出内容:

    mkdir ../git-target-repo && cd ../git-target-repo
    git init
    
  • 执行定向导出:
    假设你已将hg-fast-export工具克隆到../fast-export目录,运行以下命令:

    ../fast-export/hg-fast-export.sh -r ../hg-local-repo -f ../hg-local-repo/filemap.txt
    

    参数说明:

    • -r:指定本地Hg仓库的路径
    • -f:指定刚才创建的filemap规则文件
  • 验证导出结果:
    查看Git仓库的提交历史,确认目标目录的历史记录完整:

    git log --oneline -- path/to/target-directory
    
  • 推送至GitLab:
    关联GitLab远程仓库并推送代码:

    git remote add origin <你的GitLab仓库地址>
    git push -u origin main
    

注意事项

  • 如果目标目录在Mercurial历史中有重命名或移动操作,需确保filemap中的路径覆盖不同时期的路径,必要时可添加多个include规则。
  • 若导出过程出现异常,可尝试添加--force参数重新导出,或检查filemap的路径是否存在拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:52:08