git-tf 带有单独的存储库

git-tf with separate repositories

我所在的组织不幸使用 TFS/TFVC 进行源代码控制。我的小团队的任务是用 git 做一些 "proof of concept" 运行,但我们必须能够将我们的更改推送到 TFS 中。幸运的是,git-tf 和 git-tfs 存在。然而,我们的 TFS 存储库是一个包含 20 多个不同 projects/applications 的整体存储库。在 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 历史记录和提交日志,仅将其用于本地更改跟踪)?

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

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

If I check out Project A from changeset 123 and Project B also from 123, make changes in A and then push those back up to TFS as changeset 124, will TFS think there's a merge conflict or other issue when we later make changes to B and push them up since it's all one big repository on TFS.

TFS 只会检测相应的文件和代码,就像jessehouwing 评论的那样。当两个 git 存储库中的文件都被更改时,您只会遇到冲突。例如变更集 123 中的文件具有版本 a,并在变更集 124 中使用版本 b 从 git rep1 中编辑。并且此文件还检查了 repB 的版本 a。如果你没有在 git rep2 中将它更改为版本 b。当您推动更改时,您肯定会遇到冲突。


更新

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