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

Subgit仅镜像SVN指定分支并保留完整提交历史的问题咨询

根因说明

你当前配置的问题在于Subgit需要识别分支的完整复制/切分路径才能串联起完整提交历史,仅映射目标分支或部分上游路径时,会在分支创建的节点截断历史。

可行方案

方案1:调整Subgit映射配置(推荐,适合长期同步场景)

  1. 先修改SVN Mirror插件的映射规则,把taggedTrunk所有上游来源路径都加入映射,同时开启历史追溯配置:
[svn]
# 替换为你的SVN仓库根地址
url = https://your-svn-repo-address
# 按分支创建顺序加入所有关联路径映射,让Subgit识别复制关系
trunk = Project A/trunk:refs/heads/originalTrunk
branches = Project A/branches/feature1:refs/heads/feature1
branches = Project A/branches/taggedTrunk:refs/heads/development
includePath = /src
# 开启拷贝历史追溯,避免截断
followCopies = true
  1. 触发一次全量同步,此时你会看到Git仓库里多出originalTrunk、feature1两个临时分支,development分支已经可以看到从trunk创建以来的完整历史。
  2. 如果不需要保留其他分支,在配置中添加排除规则,后续同步不会再将这些分支推送到Git:
excludeBranches = originalTrunk
excludeBranches = feature1

保存配置后重载插件即可,多余分支可以手动从Git仓库删除,不影响development的历史记录。

方案2:预拉取完整历史后再配置同步(适合仅需一次迁移+后续增量同步场景)

如果不想调整Subgit的多分支映射,也可以先用git svn命令拉取完整历史后再推送到目标仓库:

  1. 本地执行命令拉取SVN全量历史:
# 初始化git svn仓库
git svn init <你的SVN仓库根地址> \
  --trunk="Project A/trunk" \
  --branches="Project A/branches" \
  --include-paths="^Project A/src/"
# 拉取全量提交
git svn fetch
  1. 拉取完成后,将本地对应taggedTrunk的分支重命名为development,删除其他多余分支后推送到Bitbucket的目标Git仓库。
  2. 再按照你原来的单分支映射规则配置Subgit SVN Mirror插件做后续增量同步即可,已有的完整历史不会被截断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:15:05