Git和tfs:我可以只让中央回购协议与tfs通信吗?

Git和tfs:我可以只让中央回购协议与tfs通信吗?,git,tfs,version-control-migration,Git,Tfs,Version Control Migration,我想将我的团队从使用TFS进行版本控制转移到git 是否有任何理由我不应该做以下事情: 使用git tfs创建中心git存储库 让每个开发人员克隆中央回购协议,从中提取并推送到它 然后只从中央回购协议更新tfs 谢谢 使用git tfs创建中心git存储库 TFS有一个包含所有内容的中央存储库,这可能很危险。 由此产生的git回购最终可能会成为一个巨大的回购(不容易复制) 我建议创建几个git-tfs,以便创建几个较小的git-repo。因为git和tfs中的交互(git-tfs)并不完美(因为

我想将我的团队从使用TFS进行版本控制转移到git

是否有任何理由我不应该做以下事情:

  • 使用git tfs创建中心git存储库
  • 让每个开发人员克隆中央回购协议,从中提取并推送到它
  • 然后只从中央回购协议更新tfs 谢谢

    使用git tfs创建中心git存储库

    TFS有一个包含所有内容的中央存储库,这可能很危险。
    由此产生的git回购最终可能会成为一个巨大的回购(不容易复制)


    我建议创建几个
    git-tfs
    ,以便创建几个较小的git-repo。

    因为git和tfs中的交互(git-tfs)并不完美(因为git的一个主要特征是一旦创建就不能修改提交,而且git-tfs不能与裸存储库一起工作),在TFS前面放置一个中央Git存储库并不是一件简单的事情

    我想你的所有团队都会使用这个工作流,否则,你可以停止思考这样做的想法(由于合并冲突,你将不得不管理)

    因为git-tfs不能与裸存储库一起工作,所以最终您将得到两个git存储库,实际上您应该同步它们。第一个是推送的(裸的),第二个是与TFS交互的(使用git TFS的不是裸的)

    然后,您有两个选项: a) 即使有多个git提交,也可以接受在TFS上只有一个提交(使用git-TFS“checkin”命令) b) 您希望在TFS中复制每个git提交(使用git TFS“rcheckin”提交)

    第一种情况(a)不是更好,但是使用一些scipts和git钩子更容易解决,因为在两个存储库之间总是只有新的git提交进行同步

    第二种情况b)对我来说是唯一可以接受的,但更难解决,因为当您使用git-tfs'rcheckin'命令同步git存储库时,对于每个git提交,都会创建一个新的,并且同步脚本将更难编写(我甚至不知道是否可以解决所有合并冲突)。我开始编写这些脚本,但由于不值得这样做而停止了编写(特别是现在VisualStudio2012解决了每次重新加载解决方案文件时的重新加载问题)。如果你想这样做,下面文章中的脚本是一个很好的起点

    总之,我认为这样做不值得。您可以找到一个使用git tfs的本地工作流,它非常简单,不需要git中央存储库


    如果您仍然想要一个Git中央存储库,您可以检查这条POST()的混合方式(提交到TFS和从Git获取),这似乎是有效的。

    Team Foundation Server 2013现在支持Git作为团队项目的源代码管理库,而Git的VisualStudio工具提供在VisualStudio中嵌入的GIT访问。(,2013年随附)。

    好的,当然。但我真正的意思是只有中央回购的策略git-tfs到tfs。既然git-tfs管理分支,这应该不是一个大问题……而且即使克隆可能很长,也只能做一次!@Philippe-true,我对你非常完整的答案投了赞成票。我的观点是更一般的:当你使用DVCS时,最好根据其使用情况调整repo的粒度(你必须在周围克隆它),并借此机会隔离代表应用程序体系结构的不同组件。而不是保留一个巨大的单一源代码库。