1

我是一个不幸地使用 TFS/TFVC 进行源代码控制的组织的一员。我的小团队的任务是使用 git 运行一种“概念验证”,但我们必须能够将我们的更改推送到 TFS。幸运的是,存在 git-tf 和 git-tfs。但是,我们的 TFS 存储库是一个单一的存储库,包含 20 多个不同的项目/应用程序。在 git 中执行此操作的正确方法是让每个项目成为自己的 git 存储库。我知道我可以使用带有 git-tf 的桥从 TFS 签出一个单独的项目,如果我们永久转换为 git,我会这样做。

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

git-tf 或 git-tfs 是否正确处理此问题?还是我需要将整个 TFS 存储库作为单个 git 存储库检查并按原样使用?或者在这种情况下,最好将各种 TFS 项目签出到单个本地工作区中,并使用 git 创建存储库而不使用 git-tf 桥,然后将更改检查回 TFS,就好像它们是在直接工作区(基本上忽略所有 git 历史记录和提交日志,仅将其用于本地更改跟踪)?

4

1 回答 1

1

是的,您可以为每个 TFS 团队项目创建多个 Git 存储库。这就像在一个团队项目中统治许多 Git 存储库一样。

在此处输入图像描述

您可以查看此链接的更多详细信息:Many Git Repositories, but one Team Project to rule them all

如果我从变更集 123 中签出项目 A,也从 123 中签出项目 B,在 A 中进行更改,然后将其作为变更集 124 推送回 TFS,当我们稍后对 B 进行更改时,TFS 是否会认为存在合并冲突或其他问题推动它们,因为它是 TFS 上的一个大存储库。

正如 jessehouwing 评论的那样,TFS 只会检测相应的文件和代码。仅当两个 git 存储库中的文件都已更改时,您才会遇到冲突。例如变更集 123 中的文件具有版本 a,并在变更集 124 中使用来自 git rep1 的版本 b 进行了编辑。此文件还使用 repB 的版本 a 签出。如果您没有在 git rep2 中将其更改为版本 b。当您推送更改时,您肯定会遇到冲突。


更新

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

于 2016-09-29T10:02:11.447 回答