我使用https://stackoverflow.com/a/13710811/260865在一个git repo中获取带分支的tfs repo,它适用于几个分支。但由于以下原因,我无法启动所有分支机构:
"C:\tmp\Main>git tfs branch --init --authors=C:\tmp\authors-file.txt $/someproject/Branches/7.2.0
The name of the local branch will be : Branches/7.2.0
error: The root changeset 26907 have not be found in the Git repository. The branch containing the changeset should not have been created. Please do it before retrying!!"
或
C:\tmp\Main>git tfs branch --init --authors=C:\tmp\authors-file.txt $/someproject/Releases/7.0.0.1
The name of the local branch will be : Releases/7.0.0.1
An unexpected error occured when trying to find the root changeset.
Failed to find root changeset for $/someproject/Releases/7.0.0.1 branch in $/someproject/Main branch
(重命名为分支机构问题:https://github.com/git-tfs/git-tfs/pull/299)
TFS表示7.0.0.1是Main的子分支。
环境: git-tfs版本0.17.1.0(TFS客户端库11.0.0.0(MS))(32位) C:\工具\ gittfs \ GIT-tfs.exe
有人有解决方案吗?
答案 0 :(得分:2)
问题是由已重命名的分支引起的。有issue for this here但尚未解决。
init-branch不处理TFS分支重命名
如果我在TFS中创建一个分支 当我尝试执行时,Trunk然后重命名分支 在重命名的分支上的init-branch它找不到正确的 变更并抱怨Git中不存在原文 存储库
“在幕后的TFS 2010中,重命名实际上是一个分支和 删除过程,这意味着我们最终得到了新的分支,但也是一个 删除旧名称的分支。除非你有,否则这并不明显 '显示源控件资源管理器中已删除的项目'启用...“就是这样 之所以git-tfs无法处理这种情况,是因为git-tfs无法初始化 父分支之前没有被分支的分支:(它是 我计划做的第二步,以更好地处理合并变更集 并允许在root changeset时自动初始化父分支 未找到(#363合并后)。
但它需要一个大的重构(需要从一个方法中移动很多方法) 上课到另一个)...
答案 1 :(得分:1)
我找到了一种解决方法,允许您克隆所有分支,即使它们已重命名。 正如亚当提到的那样,重命名的分支被删除并重新创建,我们需要在子代之前克隆“父”提交。
1)查找所有已删除分支的列表 我使用Visual Studio - >源控制资源管理器 - >单击显示隐藏已删除的选项切换图标
2)在 Ancestor Order 中,git tfs branch --init $\Project\Branch_Location
每个已删除的分支
答案 2 :(得分:1)
支持分支重命名的开发现在在master中合并(但尚未发布。将在下一个版本中应该是0.21)。
它应该解决大多数重命名的情况(但是使用Tfs我们永远不会确定:()。随意测试和report case不能工作...