将坩埚与tfs集成

时间:2014-05-18 22:24:42

标签: tfs jira tfs2012 jira-plugin

我使用TFS和Jira来管理我的团队任务。 我想在开发过程中集成一个Code Review工具。

当我尝试使用坩埚时,我发现它不支持TFS。

我想知道是否有一个好的和可靠的解决方案,让我能用坩埚和TFS。

另外,如果VS和JIRA的代码重新审视工具还有其他建议。

感谢!

2 个答案:

答案 0 :(得分:8)

前段时间我们决定在我们的项目上运行Crucible。我们的项目使用TFS 2012.我们在TFS中使用一个名为' dev'作为主干,即开发人员提交的分支和原始代码所在的分支。第二个分支,其中发布代码名为' main' 我们的同行评审工作流程是:

  1. 进行一些更改并搁置代码
  2. 向评论者发送电子邮件
  3. 审稿人在某些自定义工具中进行审核并发送电子邮件并通知他已完成
  4. 将代码提交到' dev' TFS上的分支
  5. 等待构建服务器成功构建
  6. 致力于'主要'生产代码所在的分支
  7. 我们的目标是改善步骤 2 3 。 Crucible是很好的工具,但它并不支持开箱即用的TFS,因此我们决定使用一些TFS桥。实际上,使用tfs-> svn或tfs-> git有两个主要选项。最后,我们决定使用tfs-> git bridge,因为在git中创建分支非常便宜并且它可能有用(它确实如此),因为我们正在考虑在git中使用分支来获取TFS中的搁置集。最后我们决定使用git。 到目前为止,我只知道将TFS转换为git的两个选项:

    • git tf - 这个适用于Linux并由Microsoft推荐
    • git tfs - 这个只适用于Windows,但我们选择这个,因为有大量的命令 我们需要将TFS分支转换为Git repo并将我们的git存储库保持在新的状态。我们不会使用git将新的更改推回TFS,我们只需要对Crucible进行git repo。

    我们为实现目标而采取了一些措施: 首先,我们克隆了我们的TFS" dev"分支到" dev"回购。我们只需要这一个分支机构,而且我们还没有从" main"科。我们尝试使用 clone 命令执行此操作,但没有任何运气:

    git tfs clone http://tfs:8080/tfs/DefaultCollection $/SOME_PATH/dev
    

    此命令从TFS克隆完整历史记录,但似乎我们的TFS分支非常大,并且在某些时候 git-tfs System.OutOfMemoryException异常崩溃。另一次,除了超出路径的最大限制之外,我们失败了,我们通过将工作空间目录映射到尽可能短的路径来找到解决方法,如下所示:

    git config --global git-tfs.workspace-dir e:\ws
    

    当我们使用 clone 命令失败时,我们开始使用 quick-clone 命令。这个克隆从历史上的任何时间开始,从任何变化集开始。

    git tfs quick-clone -c545532 http://tfs:8080/tfs/DefaultCollection $/SOME_PATH/dev
    

    选项 -c545532 这里是开始复制的变更集的编号。每年一次,我们用新标题更新所有源文件,因此我们只需从当年年初开始复制。通过这种方式,我们应该拥有从搁置集中分支的所有必要历史。 如果您在此处未使用 -c 参数,那么您将无法获得任何历史记录,因为如果您询问,快速克隆只会复制历史记录为了它。 一旦克隆了存储库,我们就编写了#34; script"并将其放入任务调度程序,每5分钟运行一次。脚本正在做的只是检查TFS中的新提交并在我们的git存储库上创建新的分支。同样,我们在这里使用git-tfs。要获取所有新提交,我们称之为 pull 命令:

    git tfs pull 
    

    要将TFS搁置集取消搁置到特定的git分支中,我们使用 unshelve 命令:

    git tfs unshelve -user=TFSDOMAIN\Username "Shelveset Name Here" Branch_Shelveset_Name_Here
    

    这最后一个命令在来自shelveset ' Shelveset Name Here' 的TFS中的git中创建分支' Branch_Shelveset_Name_Here' 。 shelveset的名字可以包含空格和一些转义字符,所以我们的脚本"清理此类案件。正如我所说,在git上创建非常便宜的分支,因此我们没有任何问题。如果有什么东西被推入git repo,我们会调用crucible API来刷新它。 顺便说一句:为了让网络中的git repo可见,我刚刚安装了 SCM-Server 。 Crucible已安装并配置为使用我们的域用户名/密码,因此我们也会收到电子邮件通知。因此,我们从工作流程中彻底改进了第2步和第3步,它可以工作几个月,我们很高兴。

    我们的工作流程变为:

    1. 进行一些更改并搁置代码
    2. 在坩埚中等待我们的搁架(约6-8分钟),创建评论
    3. 审稿人在坩埚中进行审查
    4. 将代码提交到' dev' TFS上的分支
    5. 等待构建服务器成功构建
    6. 致力于'主要'生产代码所在的分支

    7. 在使用此功能时,我发现了一些问题:

      Issue1 :如果您将新文件添加到项目中并搁置它,您将无法在git repo中看到它,因为git-tfs无法找到它的父提交。我不确定这个工具是否存在错误,但最简单的解决方法是在shelveset中至少有一个文件与现有父文件。例如,您添加了2个新文件,并希望将其发送以供审核。不要使用这些文件创建shelveset,只需触摸已经在git repo中的任何文件(在Visual Studio中使其挂起),最后您将能够创建包含三个文件的shelveset(2个新文件[add]和1个用于编辑[edit] )。在这种情况下一切正常,git-tfs可以取消TFS'搁置到git分支中,即我们可以在坩埚中看到它。

      第2期:有一天,我们在git repo中的HEAD脱离了#34; master"科。一旦发生这种情况,坩埚就没有看到新的变化集。我用命令修复了它:

      git rebase HEAD master
      

      我已经创建了图片,这一切对我们的项目有何影响,可能会有所帮助:

      TFS-GIT-CRUCIBLE

答案 1 :(得分:2)

您可以将Mira和TFS与TaskTop集成,然后使用Visual Studio内置的代码审查工具。

我认为这些是您最好的选择。

相关问题