0

我目前正在尝试从 TFS 2013 迁移到 GitLab。问题是我想在我的 TFS 服务器上保留一些项目,但将它们全部放入一个集合中。

我不想将整个项目从一个集合复制到另一个集合,我想复制一个文件夹并保留历史记录。我已经尝试从 TFS 服务器下载文件夹并将其签入到另一个集合中,这确实有效,但历史记录丢失了。

我的第二次尝试是按照以下说明使用 git-tfs 和 git-tf 工具: https ://fabiostawinski.wordpress.com/2017/03/22/tfvc-to-git-to-tfvc-is-it-possible /但是 git-tf 工具非常过时,我发现我的问题没有任何帮助,所以我放弃了它。(git-tf 说我的 TFS-URL 是错误的,即使它与 git-tfs 一起使用)

我的另一个猜测是使用 git-tfs 工具从 TFS-Server 克隆文件夹,我使用以下命令将其克隆为本地存储库:

git tfs clone <tfs-address> <project-address>

据我所知,git tfs rcheckin在 tfs 服务器上有再次签入的命令。我添加了一个指向另一个集合的新 tfs 远程:

git tfs init -i collection2 <tfs-address/target_collection> "<project-address>"

之后,我尝试使用添加的新遥控器签入:

git tfs rcheckin --i=collection2

不幸的是,我收到了这个错误(包括调试)

Command run:git tfs rcheckin --i=default --d
No authors file used.
git-tfs version 0.31.0.0 (TFS client library 14.0.0.0 (MS)) (64-bit)
git command: Starting process: git --version
git command time: [00:00:00.0377481] --version
No TFS parents found!

所以我想问一下是否有更简单的方法来做这一切,或者我只是错过了什么?

4

2 回答 2

0

TFS 签入存储在数据库中,每个签入 ID 都是为该集合自动生成的 ID。如果您复制文件夹并手动添加,则会自动生成新的签入 ID。因此,不可能将 TFS 文件夹与跨集合的历史记录一起移动。

于 2020-07-15T12:55:11.620 回答
0

根据我的测试,当我运行相同的脚本时,我可能会得到相同的错误。

要从 TFVC 迁移到 Git 并保留历史记录,您可以尝试以下步骤:

Step1:运行脚本:git tfs clone <TFS URL> $/project(repo类型为tfvc)。然后您可以克隆项目和所有历史记录。

步骤 2:运行cd repo path以导航到本地 repo 路径并git checkout -b TempBranch 创建临时分支。

Step3:运行git remote add origin <Git URL>设置目标。

例如:git remote add origin http://dctfs2019:8080/tfs/Collection2017/Project1/_git/3(repo 类型为 git)

Step4:运行git push --set-upstream origin TempBranch以将所有 repos 推送到 temp 分支。

在此处输入图像描述

然后repo和history就会推送成功。您还可以创建拉取请求以将 tempbranch 合并到 master 分支。

更新:

从这张票

Git-TFS:绝不可以用来将此历史记录推送到另一个空的 TFVC 项目。

它不能直接将 TFVC 迁移到 TFVC。

参考您的需求后,我建议您可以使用 Git-TFS 将 TFVC(TFS) 迁移到 Git(Gitlab)。您只需要在 git 命令中更改目标 repo 路径。

然后你可以使用 Git-tf 将 Git repo (Gitlab) 迁移到 TFVC repo(TFS)。

这是关于将 Git repo 迁移到 TFVC repo的文档。

于 2020-07-16T03:25:11.360 回答