如何将Azure DevOps中TFVC仓库迁移至不同AD下的新组织
跨不同AD组织迁移TFVC仓库的实操方法
因为是跨不同Active Directory的Azure DevOps组织,直接的组织内迁移工具无法使用,下面两种方法可帮你完整迁移TFVC仓库且保持原有格式:
方法一:TF命令行手动导出导入(适合中小仓库)
无需额外工具,用原生TF命令即可完成:
- 先准备本地环境:安装Visual Studio(需包含TFVC工具组件),或单独下载
tf.exe命令行工具。同时分别登录源和目标组织的Azure DevOps账号——由于是不同AD,建议用无痕窗口或不同浏览器分开登录,避免权限冲突。 - 导出源仓库:
打开命令提示符,先创建关联源组织的本地工作区:
拉取仓库所有历史版本文件:tf workspace /new /collection:https://dev.azure.com/你的源组织名/ 本地源工作区名
其中tf get $/你的源项目名/源仓库名 /version:T /all /overwrite/version:T表示拉取最新版本,/all会下载所有历史版本的文件到本地。 - 在目标组织创建空TFVC仓库:登录目标组织,新建项目(或使用现有项目),添加一个空的TFVC仓库,路径尽量与源仓库对应(比如源是
$/ProjectA/Repo,目标设为$/NewProject/Repo),方便后续导入。 - 导入到目标仓库:
创建关联目标组织的本地工作区:
将之前导出的本地文件全部复制到目标工作区的对应路径,然后提交:tf workspace /new /collection:https://dev.azure.com/你的目标组织名/ 本地目标工作区名
注:这种方法仅保留最终文件状态,若需保留每个变更集的完整历史,建议使用下面的工具方法。tf add * /recursive tf checkin /comment:"迁移源TFVC仓库完整内容" /recursive
方法二:用Azure DevOps Migration Tool(ADOM)迁移完整历史(推荐)
微软官方工具,可完整迁移变更集、分支、标签,适合有大量历史记录的仓库:
- 下载ADOM工具:从Azure DevOps官方仓库获取最新版本,解压到本地文件夹。
- 编写配置文件:新建JSON文件,填写源和目标组织信息,使用PAT验证(跨AD无法用集成身份验证,必须用PAT):
{ "Source": { "Collection": "https://dev.azure.com/源组织名/", "Project": "源项目名", "AccessToken": "源组织的PAT(需开启Code全权限)" }, "Target": { "Collection": "https://dev.azure.com/目标组织名/", "Project": "目标项目名", "AccessToken": "目标组织的PAT(需开启Code全权限)" }, "Processors": [ { "Processor": "TfsVersionControlProcessor", "Options": { "SourceRepository": "$/源项目名/源仓库名", "TargetRepository": "$/目标项目名/目标仓库名", "MigrateBranches": true, "MigrateHistory": true, "MigrateLabels": true } } ] } - 执行迁移:打开命令行,进入ADOM工具所在目录,运行:
工具会自动执行迁移流程,可通过日志跟踪进度,遇到问题也能从日志中排查原因。.\migration.exe execute /config:你的配置文件名.json
必看注意事项
- 权限不会自动迁移:迁移完成后,需手动在目标组织重新配置用户和组的TFVC权限。
- PAT权限要充足:源和目标的PAT必须拥有「Code (full)」权限,否则会出现权限报错。
- 大仓库建议分批次操作:若仓库体积较大,可分分支迁移,或选择非高峰时段执行,避免影响日常开发。
- 迁移后务必验证:对比源和目标仓库的文件、变更集、分支结构,确保无遗漏或错误。
内容的提问来源于stack exchange,提问作者Bubble Bub
相关产品推荐
相关产品推荐

