克隆多个 TFS 存储库的过程
Process to clone multiple TFS repositories
我们目前正在尝试将一些存储库从 TFS 迁移到 Git。但是我遇到了一些问题,我需要一些帮助来定义流程。
我们有不同的产品,并且在 TFS 中有与这些产品相对应的文件夹。例如,Application 1
、Application 2
、Product 3
等。当我使用git tfs list-remote-branches <tfs url>
时:我看到的可以克隆的分支的结果是这样的:
$/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-branches
命令时获得的结果类型的示例。我可以使用以下方法成功克隆这些存储库:
git tfs clone <tfs url> <repo path> --branches=all
但是,这有一个问题。我正在尝试定义一个流程,在该流程中可以轻松完成所有这些工作。我知道我可以为此编写一个脚本,并且我正在努力解决这个问题。但我遇到的问题是我无法直接克隆 $/Application 1
或 $/Application 2
。以上只是一个示例,而实际上我需要克隆更多的分支。按此顺序全部完成,看起来会很杂乱无章。
我尝试使用 Visual Studio Source Explorer 中的“转换为分支”并尝试将 $/Application 1
和其他文件夹(Application 2
和 Product 3
)转换为分支但是它说分支已经存在所以它不能转换它。
有没有一种流畅有效的方法可以克隆这些 TFS 存储库并将它们转换为 git?到目前为止,这个过程可能会变得非常混乱,因为 git tfs clone
为每个单独的分支创建文件夹。
由于 2 个 VCS 工具之间的差异,将 TFVC 迁移到 git 是一件棘手的事情。
git-tfs 正在尝试提供帮助,但如果您尝试要求它迁移分支,则取决于复杂的 TFVC 历史的程度可能无法迁移它。
因为使用 git-tfs,你有两种可能性:
- 尝试迁移分支
- 以“平坦”的历史迁移
1。使用分支支持迁移
您需要克隆 git tfs list-remote-branches
返回的分支之一。
大多数时候,您会想要复制用 [*]
突出显示的那些。
如果我很理解你的问题,你会想要克隆所有顶级分支和所有链接分支(带有 --branches=all
)即:
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
...
如果一切顺利,每个克隆都会为您提供一个 git 存储库,其中包含克隆的分支以及链接到其中的所有其他分支。
例如,对于 Application 1
,您最终会在 git 存储库中找到 2 个“pseudo/tfvc” git 远程:tfs/default
将对应到克隆的分支,每个其他分支都有自己的“tfvc”远程
在那之后,您将能够像那样保留它或尝试将所有“应用程序”存储库与 git。
合并
2。以平坦的历史迁移
这是使用 --branches=none
选项完成的。
您可以克隆您想要的 TFVC 文件夹甚至根存储库,但它只会获取此范围的历史记录并且不会尝试
这是上一个方法失败时要做的事情。
因此,您知道有一个 git 历史记录,您可以保持这样(但大多数时候它不会真正有用)或尝试使用 git
命令重新创建历史记录(例如git subtree
)。但它远非完美。
您可以在此处找到 git-tfs 的更多文档:https://github.com/git-tfs/git-tfs#use-git-tfs
我们目前正在尝试将一些存储库从 TFS 迁移到 Git。但是我遇到了一些问题,我需要一些帮助来定义流程。
我们有不同的产品,并且在 TFS 中有与这些产品相对应的文件夹。例如,Application 1
、Application 2
、Product 3
等。当我使用git tfs list-remote-branches <tfs url>
时:我看到的可以克隆的分支的结果是这样的:
$/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-branches
命令时获得的结果类型的示例。我可以使用以下方法成功克隆这些存储库:
git tfs clone <tfs url> <repo path> --branches=all
但是,这有一个问题。我正在尝试定义一个流程,在该流程中可以轻松完成所有这些工作。我知道我可以为此编写一个脚本,并且我正在努力解决这个问题。但我遇到的问题是我无法直接克隆 $/Application 1
或 $/Application 2
。以上只是一个示例,而实际上我需要克隆更多的分支。按此顺序全部完成,看起来会很杂乱无章。
我尝试使用 Visual Studio Source Explorer 中的“转换为分支”并尝试将 $/Application 1
和其他文件夹(Application 2
和 Product 3
)转换为分支但是它说分支已经存在所以它不能转换它。
有没有一种流畅有效的方法可以克隆这些 TFS 存储库并将它们转换为 git?到目前为止,这个过程可能会变得非常混乱,因为 git tfs clone
为每个单独的分支创建文件夹。
由于 2 个 VCS 工具之间的差异,将 TFVC 迁移到 git 是一件棘手的事情。
git-tfs 正在尝试提供帮助,但如果您尝试要求它迁移分支,则取决于复杂的 TFVC 历史的程度可能无法迁移它。
因为使用 git-tfs,你有两种可能性:
- 尝试迁移分支
- 以“平坦”的历史迁移
1。使用分支支持迁移
您需要克隆 git tfs list-remote-branches
返回的分支之一。
大多数时候,您会想要复制用 [*]
突出显示的那些。
如果我很理解你的问题,你会想要克隆所有顶级分支和所有链接分支(带有 --branches=all
)即:
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
...
如果一切顺利,每个克隆都会为您提供一个 git 存储库,其中包含克隆的分支以及链接到其中的所有其他分支。
例如,对于 Application 1
,您最终会在 git 存储库中找到 2 个“pseudo/tfvc” git 远程:tfs/default
将对应到克隆的分支,每个其他分支都有自己的“tfvc”远程
在那之后,您将能够像那样保留它或尝试将所有“应用程序”存储库与 git。
合并2。以平坦的历史迁移
这是使用 --branches=none
选项完成的。
您可以克隆您想要的 TFVC 文件夹甚至根存储库,但它只会获取此范围的历史记录并且不会尝试
这是上一个方法失败时要做的事情。
因此,您知道有一个 git 历史记录,您可以保持这样(但大多数时候它不会真正有用)或尝试使用 git
命令重新创建历史记录(例如git subtree
)。但它远非完美。
您可以在此处找到 git-tfs 的更多文档:https://github.com/git-tfs/git-tfs#use-git-tfs