我目前正在尝试从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!
所以我想问问是否有更简单的方法来完成所有这些工作,或者我是否只是缺少一些东西?
答案 0 :(得分:0)
TFS签入存储在数据库中,每个签入ID是该集合的自动生成的ID。 如果您复制文件夹并手动添加,则将自动生成新的签入ID。 因此,不可能在整个集合中移动带有历史记录的TFS文件夹。
答案 1 :(得分:0)
根据我的测试,当我运行相同的脚本时,我可能会遇到相同的错误。
要从TFVC迁移到Git并保留历史记录,可以尝试以下步骤:
步骤1:运行脚本:git tfs clone <TFS URL> $/project
(回购类型为tfvc)。然后,您可以克隆项目和所有历史记录。
第2步:运行cd repo path
导航到本地存储库路径,然后运行git checkout -b TempBranch
创建一个临时分支。
第3步:运行git remote add origin <Git URL>
设置目标。
例如:git remote add origin http://dctfs2019:8080/tfs/Collection2017/Project1/_git/3
(回购类型为git)
第4步:运行git push --set-upstream origin TempBranch
将所有存储库推送到temp分支。
然后回购和历史记录将被成功推送。您还可以创建拉取请求以将临时分支合并到master分支。
更新:
来自this ticket:
Git-TFS:绝不能用于将历史记录推送到另一个空的TFVC项目。
它无法直接将TFVC迁移到TFVC。
参考您的要求之后,建议您可以使用Git-TFS将TFVC(TFS)迁移到Git(Gitlab)。您只需要在git命令中更改目标存储库路径即可。
然后,您可以使用Git-tf将Git存储库(Gitlab)迁移到TFVC存储库(TFS)。
这是有关migrate Git repo to TFVC repo的文档。