Git 克隆多个TFS存储库的过程
我们目前正在尝试将一些存储库从TFS迁移到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
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,您有两种可能:
[*]
突出显示的内容
如果我很了解您的问题,您将希望克隆所有顶部分支和所有链接分支(使用--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
...