git tfs branch --init --all errors

时间:2013-06-26 12:42:57

标签: git tfs branch

我使用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

有人有解决方案吗?

3 个答案:

答案 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不能工作...