使用Azure DevOps迁移工具迁移关联跨项目Git仓库的工作项时链接无法迁移的问题咨询
根据你的描述,问题的核心是迁移工具默认仅扫描当前迁移的源/目标项目内的Git仓库,对于跨项目的Git提交/分支链接,需要手动配置仓库映射关系来让工具正确关联目标组织中的对应仓库。以下是具体的解决步骤:
1. 添加跨项目Git仓库映射配置
在你的迁移配置JSON中,将"GitRepoMapping": null替换为包含跨项目仓库映射的数组。每个映射项对应一个源组织中跨项目的Git仓库,以及目标组织中已迁移完成的对应仓库:
"GitRepoMapping": [ { "SourceRepo": "sourceorg/xy/mn", "TargetRepo": "targetorg/xy/mn" } // 如果有多个跨项目仓库,继续添加类似的映射项 ]
注意:
SourceRepo和TargetRepo的格式为{组织名}/{项目名}/{仓库名},确保与你实际的仓库路径一致。如果工具警告中显示的是xy/mn(仅项目/仓库名),你也可以尝试使用这种格式作为映射值,比如:"SourceRepo": "xy/mn", "TargetRepo": "xy/mn"
2. 确认跨项目链接配置已启用
你已经在源和目标的TfsTeamProjectConfig中设置了"AllowCrossProjectLinking": true,这个配置是正确的,它允许工具处理跨项目的链接关系,请确保该参数没有被误修改。
3. 启用调试日志排查问题
将配置中的"LogLevel": "Information"修改为"LogLevel": "Debug",这样工具会输出更详细的仓库查找和映射过程日志,你可以通过日志确认工具是否正确读取了你的仓库映射配置,以及在查找目标仓库时的具体路径,帮助定位潜在的路径格式问题。
4. 验证WorkItemMigration处理器配置
确保WorkItemMigrationConfig中的"LinkMigration": true保持启用状态,这个参数是迁移工作项链接(包括Git链接)的关键配置,你当前的设置已经符合要求。
修改后的完整配置示例(仅展示关键修改部分):
{ "ChangeSetMappingFile": null, "Source": { // 原有源配置保持不变 "AllowCrossProjectLinking": true }, "Target": { // 原有目标配置保持不变 "AllowCrossProjectLinking": true }, "FieldMaps": [], "GitRepoMapping": [ { "SourceRepo": "sourceorg/xy/mn", "TargetRepo": "targetorg/xy/mn" } ], "LogLevel": "Debug", "Processors": [ { "$type": "WorkItemMigrationConfig", "Enabled": true, "LinkMigration": true, // 其他原有配置保持不变 } ], // 其他原有配置保持不变 }
完成上述配置修改后,重新运行迁移工具,工具应该能正确识别跨项目的Git仓库链接,并将工作项中的链接替换为目标组织中对应的仓库路径,解决「Commit not found or no permission to access it」的提示问题。
内容的提问来源于stack exchange,提问作者alisaSyndrome

