0

这里工作的官方 SCM 是 TFS。我使用git-tfs才能工作。我们公司本地分支机构的其他开发人员将StarTeam用于本地开发分支机构(是的,那里有比 TFS 更差的 SCM)。现在,我们中的一些人正在考虑从 StarTeam 迁移到 Git 以进行本地开发。

对于多个用户,将 git 与 tfs 结合使用的最佳方式是什么?

我有的最好的主意:

  1. 一个中央服务器拥有 TFS 存储库的 1:1 副本(通过 git-tfs,每个脚本大约每小时同步一次)
  2. 开发者从此服务器拉取。
  3. Dev 创建分支来实现功能。
  4. 完成后,dev 通过 TFS 提交并删除分支。
  5. Dev 通过第一步将他的更改拉入他的主分支。

这个工作流程可以工作吗?有没有人有经验如何设置这样的东西?

4

2 回答 2

1

首先 TFS 不是 SCM,它是一个 ALM 平台。它提供了两个原生 SCM 选项,TFVC 和 Git。

您最好的选择是在您的 TFS 服务器中创建一个新的团队项目,并且当您被询问要使用哪个 SCM 提供商时选择 Git。这将为您提供类似于 GitHub 或 Bitbucket 的东西,但企业已准备好进行企业审计。然后,您可以将此新的 TFS Git 存储库添加为源并推送。

如果您仍然必须使用 TFVC,那么我建议除了上述内容之外,您还可以每天使用 Git-tfs 在此服务器 Git 存储库和 TFVC 之间推送。

  1. 使用 Git 作为 SCM 创建 MyProject-Git 团队项目
  2. 使用 Git-TF 克隆您的 MyProject-TFVC
  3. 将 MyProject-Git 添加为 MyProject-TFVC 的本地 Git 副本的远程
  4. 推送到 MyProject-Git

您现在拥有相同代码的 Git 和 TFVC 副本,并且所有历史记录都完好无损。然后,您的每个编码人员都可以克隆 MyProject-Git 并在 Git 中愉快地工作。

然后,您可以设置一个自动化的计划流程,以定期同步 MyProject-Git 和 MyProject-TFVC。您需要通知的只是冲突,但由于一切都在服务器端并已备份,您可以在闲暇时进行。

于 2015-03-05T05:30:23.467 回答
0

当前的解决方案与我上面概述的基本相同。主要限制:

  • 我的同事不习惯安慰并尽量避免他们。CLI 应用程序是不行的(可悲的是)
  • TFS 仍然是“上游”(这不是我想要保持活力的构建过程)
  • 历史必须是正确的(谁做了什么,什么时候做的)
  • 每个开发人员都必须能够每次都提交

所以... :

  • 主存储库每 10 分钟同步一次git tfs fetch,分支重置为tfs/branchname
  • 禁止提交到官方分支(tfs 分支的副本)。
  • 签入 TFS 是通过git tfs rcheckin --no-merge(包装在 GitExtensions 的插件中)完成的。
  • :%s/tfs/TFVC/g

我们已经为 3 个存储库和多个分支运行此设置几个月了。我的同事们很快就习惯了 git 和这个工作流程——这个问题时不时地出现,但它变得越来越少。我有点惊讶,这件事的效果如何。

于 2015-03-12T16:53:42.770 回答