4

我使用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 version 0.17.1.0 (TFS client library 11.0.0.0 (MS)) (32-bit) C:\tools\gittfs\git-tfs.exe

有人对此有解决方案吗?

4

3 回答 3

2

问题是由分支已重命名引起的。这里有一个问题,但尚未解决。

init-branch 不处理 TFS 分支重命名

如果我从我的 Trunk 在 TFS 中创建一个分支,然后重命名该分支,当我尝试在重命名的分支上执行 init-branch 时,它找不到正确的变更集并抱怨原始版本不存在于 Git 存储库中

“在 TFS 2010 的幕后,重命名实际上是一个分支和删除过程,这意味着我们最终得到了新分支,但也是旧名称的删除分支。除非您启用了“在源代码管理资源管理器中显示已删除的项目”,否则这并不明显……”这就是 git-tfs 无法处理这种情况的原因,因为 git-tfs 在父分支尚未初始化时无法初始化分支before :( 这是我计划做的第二步,以更好地处理合并变更集,并允许在未找到根变更集时自动初始化父分支(合并 #363 之后)。

但是它需要一个大的重构(需要将很多方法从一个类移动到另一个类)......

于 2013-08-07T17:55:22.683 回答
1

我找到了一种解决方法,即使它们已重命名,您也可以克隆所有分支。正如亚当所提到的,重命名的分支被删除并重新创建,我们需要在孩子之前克隆“父”提交。

1) 查找我使用 Visual Studio -> Source Control Explorer -> 单击Show Hide Deleted Options切换图标的所有已删除分支的列表

2) 在Ancestor Order中,git tfs branch --init $\Project\Branch_Location每个删除的分支

于 2014-10-27T06:18:00.430 回答
1

支持分支重命名的开发现已合并到 master 中(但尚未发布。将与应该是 0.21 的下一个版本一起)。

它应该可以解决大多数重命名的情况(但是对于 Tfs,我们永远不确定 :( )。请随意测试和报告不起作用的情况......

于 2014-10-27T09:08:32.217 回答