Git 克隆多个TFS存储库的过程

Git 克隆多个TFS存储库的过程,git,powershell,github,tfs,Git,Powershell,Github,Tfs,我们目前正在尝试将一些存储库从TFS迁移到Git。但我面临着一些问题,我可以在定义流程时使用一些帮助 我们有不同的产品,TFS中也有相应的文件夹。例如,Application 1、Application 2、Product 3等。当我使用git-tfs列出远程分支时:我看到的可克隆分支的结果如下: $/Application 1/some folder1/some subfolder1 [*] | +- $/Application 1/some folder1/some subfolder1/v

我们目前正在尝试将一些存储库从TFS迁移到Git。但我面临着一些问题,我可以在定义流程时使用一些帮助

我们有不同的产品,TFS中也有相应的文件夹。例如,
Application 1
Application 2
Product 3
等。当我使用
git-tfs列出远程分支时
:我看到的可克隆分支的结果如下:

$/Application 1/some folder1/some subfolder1 [*]
|
+- $/Application 1/some folder1/some subfolder1/v.15/DLL files

$/Application 2/some folder2/some subfolder2 [*]
|
+- $/Application 2/some folder2/some subfolder2/v.14/DLL files
|  |  $Application 2/some folder2/some subfolder2/v.20/LayoutDesigns
上面的代码片段是我在使用
git-tfs-list-remote-branchs
命令时得到的结果类型的示例。我可以通过以下方法成功克隆这些回购:

git tfs clone <tfs url> <repo path> --branches=all
git-tfs-clone--branchs=all
然而,这有一个问题。我试图定义一个过程,在这个过程中,所有这些都将很容易完成。我知道我可以为此编写一个脚本,我正在努力。但我的问题是,我无法直接克隆
$/Application 1
$/Application 2
。以上只是一个示例,而实际上还有更多分支需要克隆。按这样的顺序做看起来会很杂乱无章

我尝试使用Visual Studio源代码管理器中的“转换为分支”,并尝试将
$/Application 1
和其他文件夹(
Application 2
Product 3
)转换为分支,但它说分支已经存在,因此无法转换


有没有一种平滑有效的方法可以克隆这些TFS存储库并将其转换为git?到目前为止,这个过程可能会变得非常混乱,因为
git tfs clone
为每个分支创建文件夹。

由于两个VCS工具之间的差异,将TFVC迁移到git是一件棘手的事情

git tfs正试图提供帮助,但根据复杂的TFVC历史程度,如果您试图要求它迁移分支,它可能无法迁移

因为使用git tfs,您有两种可能:

  • 尝试迁移分支
  • 使用“平坦”历史进行迁移
  • 1.使用分支支持进行迁移 您需要克隆git tfs列表远程分支返回的一个分支

    大多数情况下,您都希望克隆用
    [*]
    突出显示的内容

    如果我很了解您的问题,您将希望克隆所有顶部分支和所有链接分支(使用
    --branchs=all
    ),即:

    git tfs clone“$/Application 1/some folder1/some subfolder1”--branchs=all
    git tfs克隆“$/Application 2/some folder2/some subfolder2”--branchs=all
    ...
    
    如果一切顺利,每个克隆将为您提供一个git存储库,其中包含克隆的分支以及链接到其中的所有其他分支

    例如,对于
    Application 1
    ,您将在git存储库中使用2个“pseudo/tfvc”git remote:
    tfs/default
    将对应于克隆的分支,并且每隔一个分支都将有自己的“tfvc”remote

    之后,您将能够像这样保存它,或者尝试将所有“应用程序”存储库与git结合起来

    2.以平淡的历史迁移 这是使用
    --branchs=none
    选项完成的。 您可以克隆所需的TFVC文件夹,甚至可以克隆根存储库,但它只会获取此范围的历史记录,不会尝试复制

    当前面的方法失败时,这就是要做的事情。 因此,您知道有一个git历史记录,您可以像这样保存它(但大多数情况下它不会真正有用),或者尝试使用
    git
    命令(如
    git子树
    )重新创建历史记录。但这还远远不够完美


    您可以在这里找到更多关于git tfs的文档:

    是的,这就是我想要克隆它们的方式。如果输入“$/code>”$/Application 1/some folder1/some subfolder1“”的路径,我会得到一个包含内容的“some subfolder”`但是,我会丢失前面的路径。总而言之,这是一个非常复杂和复杂的解决方案。我正在尝试这样做,在这种情况下,我可以克隆
    $/Application 1
    ,并克隆与之相关的所有分支。但是,
    $/Application 1”无法克隆,因为它未与
    [*]`一起列出。
    git tfs clone <tfs url> "$/Application 1/some folder1/some subfolder1" --branches=all
    git tfs clone <tfs url> "$/Application 2/some folder2/some subfolder2" --branches=all
    ...