我有两个 TFS 实例,一个是 2012 年,另一个是 2013 年。我的目标是从 2012 年实例中导出一些源代码并将其导入到 2013 年实例中,同时保留 checkin 历史记录。
我采用的方法是;
- 从 http://msysgit.github.io 安装适用于 Windows 的 GIT
- 从 http://gittf.codeplex.com 安装 git-tf
- 为我的 git 存储库创建一个本地文件夹 c:\git
- 在该文件夹中打开 GIT Bash 提示符(因此它是当前文件夹)
$ git tf clone http://old-tfs-host:8080/DefaultCollection $/myProject/myBranch --deep
- 删除 tf 文件夹和 git-tf 文件
- 复制到我的 USERMAP 文件
$ git tf configure --deep --keep-author --force http://new-tfs-host:8080/DefaultCollection $/myProject/myBranch
$ git tf pull
$ git commit -a -m "从 TFS 2012 初始导入"
$ git tf checkin --deep
处理大约 57% 后出现错误
git-tf: failed to pend changes to TFS due to the following errors. Please fix the errors and retry check in. The item $/path-to-file already has pending changes.
问题 - 如何解决文件的待处理更改?当我进行此 checkin 时,存储库中没有其他人,因此导出似乎已损坏?
我已经对另外两个分支使用了相同的方法并且取得了成功。
编辑我发现问题是文件被重命名,唯一的区别是大小写。所以在同样的改变中我有
删除$/source-file
编辑$/project-file
添加$/Source-File
显然我正在重命名它们,但是第 1 行中删除的文件与第 3 行中的文件相同,唯一的区别是文件名大小写。
所以我尝试了 $ git config --global core.ignorecase false
但这并不能解决在同一更改中删除和添加同一文件的问题。
最佳答案
我遇到了同样的问题,当您在一个变更集中删除、添加和编辑同一文件时就会出现这种情况。
如果您执行git tf checkin --preview
,您将看到详细信息。
我通过这样做解决了这个问题:
git tf checkin --deep --renamemode=none
关于git - 使用 GIT-TF 导入 - 项目已经有待处理的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25731970/