2016-09-28 193 views
1

我是不幸使用TFS/TFVC进行源代码管理的组织的一部分。我的小团队负责使用git运行一种“概念验证”,但我们必须能够将我们的更改推送到TFS。幸运的是,git-tf和git-tfs存在。但是,我们的TFS存储库是一个包含20多个不同项目/应用程序的单一存储库。在git中这样做的正确方法是让每个项目成为自己的git存储库。我知道我可以使用git-tf使用桥接器检查TFS中的单个项目,并且如果我们永久转换为git,那就是我会做的。git-tf与单独的存储库

我担心的是如果我们仍然需要推回到TFVC,如果我将每个项目作为自己的git存储库检查出来,当我们将更改推回原来的每个项目独立更改时,TFVC会变得混乱吗?也就是说,如果我从变更集123中检出项目A,也从123中检出项目B,则在A中进行更改,然后将这些更改作为变更集124提交给TFVC,当我们稍后进行更改时,TFVC会认为存在合并冲突或其他问题到B并推送它们,因为它们都是TFVC下的一个大存储库。

无论是否混帐TF或混帐TFS正确处理呢?或者,我是否需要将整个TFS存储库作为单个git存储库进行检查并按原样工作?或者在这种情况下,将各种TFS项目签出到单个本地工作区中可能会更好,并且可以使用git在不使用git-tf桥的情况下创建存储库,并检查更改回TFS,就好像它们是在工作区直接(基本上忽略所有的git历史记录和提交日志,并只用于本地更改跟踪)?

+1

这应该只是炒锅。只有在两个gt存储库中的文件已更改时,您才会发生冲突。就像您在同一个git存储库的两个分支尝试将相同文件的更改推送到同一个上游远程时一样。 – jessehouwing

回答

1

是的,你可以为每个TFS团队项目多git仓库。这与在一个团队项目中管理许多Git存储库的方式相同。

enter image description here

更多细节,你可以看看这个链接:Many Git Repositories, but one Team Project to rule them all

如果我从变更123和B项目也从 123检查项目A,使A转换,然后推那些回升到TFS的变更 124,将TFS觉得有一个合并冲突或其他问题时,我们 后来更改B和推起来,因为它是在TFS都是一个大 库。

TFS只会检测相应的文件和代码,就像jessehouwing评论的那样。只有在两个git存储库中的文件已被更改时,您才会发生冲突。如变更集123中的文件具有版本a,并在变更集124中使用git rep1的版本b进行编辑。这个文件也用版本a检查repB。如果你没有在git rep2中将其更改为版本B.当你推动变化时,你肯定会得到冲突。


更新

git-tfs是TFS和Git之间的双向桥梁。例如使用git tfs checkintool命令通过tfs签入窗口进行提交。因此,结果与在一个GIT团队项目中使用多个git存储库相同。唯一的区别是一次提交,另一次更改。上面提到的所有三种方法都应该是可行的。最好的一个是使用git-tfs来跟踪所有的历史记录。

+0

我想起了我不清楚的问题(混合TFS和TFVC术语)。为了澄清,我确实知道一个给定的项目可以有多个git回购。然而,在我们的情况下,TFS中的源代码控制暂时仍然是TFVC。我们的想法是将整体TFVC项目分割为本地团队的多个git仓库,然后使用git-tf/git-tfs将其推回到TFVC源代码控制中。也许这不会改变你的答案,这仍然是可能的,但我想澄清。 – moneyt

+0

git-tfs是TFS和git之间的双向桥梁。如使用'git tfs checkintool'命令通过tfs签入窗口进行提交。所以结果是一样的。上面提到的所有三种方法都应该是可行的。最好的一个是使用git-tfs来跟踪所有的历史记录。 –

+0

非常好,谢谢你的帮助 – moneyt