【问题标题】:TFVC and consequences of converting branches to foldersTFVC 和将分支转换为文件夹的后果
【发布时间】: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


【解决方案1】:

不要将您的分支转换为文件夹。

以下命令告诉您克隆什么?

    git tfs list-remote-branches http://tfs:8080/tfs

关于该主题的文档: https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/manage_tfs_branches.md#find-the-tfs-branch-to-clone-optional

编辑:git-tfs 能够克隆 TFVC 集合中的每个文件夹,但如果您想克隆带有分支的历史记录,则每个文件夹都应转换为一个分支。

【讨论】:

  • 我已经用这个输出更新了我的问题,因为它对于评论来说太长了,但基本上它列出了几个较小的分支,然后告诉我应该将根转换为分支。跨度>
  • 啊,明白了!那是我不确定的缺失部分。我的客户肯定想要他们的历史。所以我需要将它们的嵌套分支转换为文件夹并将根分支转换为文件夹,对吗?这有什么缺点吗?是否有翻转文件夹和分支的风险?我不想破坏他们的存储库。
  • 据我所知,不,在分支中转换文件夹并没有不好的副作用。如果我没记错的话,你可以在之后转换它,它会起作用,但我不确定。我希望你也是。
猜你喜欢
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 2012-05-16
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
相关资源
最近更新 更多