Azure DevOps Server 2019本地环境跨集合TFVC转Git工具迁移失败求助
我来帮你捋捋这个跨集合用Import from TFVC工具迁移的问题,毕竟我之前也碰到过类似的坑,官方工具默认确实有不少限制。
为什么会报错「给定路径中没有可导入的项」
核心原因是:Import from TFVC工具默认只能访问当前项目集合内的TFVC路径,你之前尝试的各种带集合名的相对路径都没用,因为工具本身没法直接跨集合读取TFVC数据,这是设计层面的限制。
用官方工具实现跨集合导入的步骤
要让工具能读取另一个集合的TFVC内容,得先做一步权限共享,再用完整路径指定源,具体操作如下:
给目标集合的账户开放源TFVC路径的权限
- 打开源项目集合(也就是BigProject所在的集合)的TFVC资源管理器,找到要迁移的路径
$/BigProject/Team1/Product1/Main - 右键点击该路径,选「属性」→「安全」标签
- 添加目标Git项目集合的服务账户(或者你用来执行导入的用户账户),给它分配读取权限(如果需要签出的话再加签出权限,至少要读取权限才能让工具访问内容)
- 确认权限设置生效,最好刷新一下权限再继续
- 打开源项目集合(也就是BigProject所在的集合)的TFVC资源管理器,找到要迁移的路径
使用完整的TFVC服务器HTTP路径导入
这时候不能再用相对路径了,必须输入完整的服务器路径,格式是:http://<你的Azure DevOps Server地址>:8080/tfs/<源集合名称>/BigProject/Team1/Product1/Main举个实际例子,如果你的服务器地址是
devops-server-01,源集合叫MainCollection,那完整路径就是:http://devops-server-01:8080/tfs/MainCollection/BigProject/Team1/Product1/Main注意不要加开头的
$符号,直接用这个完整的HTTP路径就行。验证导入流程
- 在Import from TFVC工具里选择TFVC选项,输入上述完整路径
- 保持「迁移历史记录」的取消勾选(如果不需要历史的话)
- 点击下一步,这时候工具应该就能识别到路径里的文件了,不会再报找不到项的错误
给其他团队的备选简便方案
如果上述方法还是遇到权限或者版本兼容问题,给其他团队推荐一个半自动化的简便方式,比手动迁移简单,也不需要复杂操作:
- 先安装微软官方的
git-tf工具(这个是专门用来在TFVC和Git之间转换的工具) - 用
git-tf clone命令把源TFVC路径导出为本地Git仓库,命令格式大概是:git-tf clone http://<服务器地址>:8080/tfs/<源集合名> $/BigProject/Team1/Product1/Main --no-history - 然后把这个本地Git仓库推送到目标项目集合的Git项目中就行
这个步骤只需要几条命令,操作起来比手动复制文件靠谱,也适合不太懂技术的团队
关键注意事项
- 执行导入的用户必须同时拥有源TFVC路径的读取权限,以及目标Git项目的写入权限
- 如果后续需要迁移历史记录,跨集合迁移可能会有更多兼容性问题,建议先测试无历史的迁移,确认没问题后再尝试带历史的操作
内容的提问来源于stack exchange,提问作者vernou




