【发布时间】:2018-11-26 17:34:23
【问题描述】:
设置:
我有一个带有 TFVC 源代码控制存储库的客户端。根是文件夹,而不是分支。分散在整个层次结构中的是分支,有时是 2 层,有时是 3 层深。为了使用 git-tfs 迁移存储库,我需要 root 作为分支。但是,当我尝试将根文件夹转换为分支时,出现此错误:
You cannot create a branch at $/myProject because a branch already exists at $/myProject/Releases/7.3/Metadata.
If $/myProject/Releases/7.3/Metadata is not a branch convert it back to a folder and retry the operation.
问题:
对我“去分支”其中一些分支有什么影响,将它们变成常规文件夹,以便我可以将根设为分支,然后使用 git-tfs 迁移它?我可能会失去一些历史吗?我会冒损坏源代码控制存储库或丢失任何数据的风险吗?我正在尝试对客户的源代码非常小心,不要冒丢失任何数据的风险。
谢谢!
更新:
我认为我需要将根转换为分支的理由: * 当创建一个简单的测试存储库来尝试迁移,并运行这个命令时
git tfs list-remote-branches https://mysite.visualstudio.com/
我收到了这条消息
“没有找到 TFS 分支!”
在this github 问题上,它说我应该切换到一个分支,然后我会看到它并且有效。所以我认为克隆不起作用,因为它没有出现在列表中。此外,使用类似结构的测试存储库,当我运行 git tfs list-remote-branches 时,我得到:
可以克隆的 TFS 分支:
$/myproject1/Releases/7.1/Metadata [*]
$/myproject1/Releases/7.2/Metadata [*]
$/myproject1/Releases/7.3/Metadata [*]
$/myproject1/Trunk/Main [*]
推荐克隆根分支(标有[*])!
PS:如果您的分支未在此处列出,也许您应该将其转换为 包含文件夹到 TFS 中的分支中:-> 打开“源代码管理” Explorer' 和对应于一个分支的每个文件夹,右键单击 在文件夹上,然后选择“分支和合并”>“转换为 分支'。
基于此,我认为我必须将其转换为分支。 我运行的下一个命令是
git-tfs clone https://mysite.visualstudio.com/ $/myproject1
我认为当根目录是文件夹时这给了我一个错误,但是当我刚刚重新运行它时它只是给了我一个警告。文件夹结构类似于 文件夹/文件夹/分支 文件夹/文件夹/文件夹/分支/文件夹 等等
警告:您将克隆整个存储库或太高 存储库路径! => 如果你想管理分支 git-tfs,克隆这个分支之一: - $/myproject1/Releases/7.1/Metadata - $/myproject1/Releases/7.2/Metadata
所以看起来响应是正确的。您可以毫无问题地克隆根目录。谢谢!
【问题讨论】:
-
为什么要将根文件夹迁移到分支?即使根文件夹不是分支,也可以通过
git tfs clone <URL> $/myProject迁移历史。遇到错误时,您使用什么命令“将根文件夹转换为分支”? -
感谢您的提问。我会用这些细节更新我的问题
-
我已经用这个信息更新了我的问题,但基本上是因为 list-remote-branches 的输出、我在互联网上找到的一些用户的 cmets 以及来自的一些输出 cmets git-tfs 工具。
-
我已经更新了我的答案给你另一个信息...
-
@DanCsharpster
git-tfs clone https://mysite.visualstudio.com/ $/myproject1会将所有版本的 TFVC 存储库迁移到 git 默认分支master。它只会显示警告而不是错误(如您所见)。如果您需要迁移某些 TFVC 分支,请在git tfs clone command中指定分支。
标签: version-control azure-devops tfvc git-tfs