我是一个不幸使用TFS / TFVC进行源代码管理的组织的一部分。我的小团队的任务是做一些"概念验证"使用git运行,但我们必须能够将我们的更改推送到TFS。幸运的是,存在git-tf和git-tfs。但是,我们的TFS存储库是一个包含20多个不同项目/应用程序的单一存储库。在git中执行此操作的正确方法是将每个项目作为自己的git存储库。我知道我可以使用git-tf桥接从TFS查看一个单独的项目,如果我们永久转换为git,它就是我要做的。
我关注的是,如果我们仍然需要回到TFVC,如果我将每个项目都检查为自己的git存储库,当我们在每个项目独立更改时推回更改时,TFVC会变得困惑?也就是说,如果我从变更集123中检查项目A而从123中检查项目B,则在A中进行更改然后将这些更改为TFVC作为变更集124,TFVC会认为当我们发生合并冲突或其他问题时之后对B进行更改并推动它们,因为它是TFVC下的所有大型存储库。
git-tf或git-tfs是否正确处理?或者我是否需要将整个TFS存储库作为单个git存储库检查并按原样使用它?或者在这种情况下,最好将各种TFS项目签出到单个本地工作空间中,并使用git创建存储库而不使用git-tf桥,并将更改检查回TFS,就好像它们是在工作区直接(基本上忽略所有git历史和提交日志,只是用它来进行本地更改跟踪)?
答案 0 :(得分:1)
是的,您可以为每个TFS团队项目创建多个Git存储库。这与在一个团队项目中统一许多Git存储库相同。
您可以查看此链接的详细信息:Many Git Repositories, but one Team Project to rule them all
如果我从变更集123和项目B中查看项目A. 123,在A中进行更改,然后将这些更改回到TFS作为变更集 124,TFS会认为当我们发生合并冲突或其他问题时 之后对B进行更改并推动它们,因为它们都很重要 TFS上的存储库。
TFS只会检测相应的文件和代码,就像jessehouwing所评论的那样。只有在两个git存储库中更改了文件时才会发生冲突。例如,变更集123中的文件具有版本a,并且在变更集124中使用来自git rep1的版本b进行编辑。此文件还检查版本a for repB。如果您没有在git rep2中将其更改为版本b。当您推动更改时,您肯定会遇到冲突。
更新
git-tfs
是TFS和git之间的双向桥梁。例如使用git tfs checkintool
命令通过tfs checkin窗口提交。因此,结果与在一个GIT团队项目中使用多个git存储库相同。唯一的区别是一次推送提交,另一次检查更改。您上面提到的所有三种方法都应该起作用。最好的一个是使用git-tfs来跟踪所有历史记录。