我使用TFS和Jira来管理我的团队任务。 我想在开发过程中集成一个Code Review工具。
当我尝试使用坩埚时,我发现它不支持TFS。
我想知道是否有一个好的和可靠的解决方案,让我能用坩埚和TFS。
另外,如果VS和JIRA的代码重新审视工具还有其他建议。
感谢!
答案 0 :(得分:8)
前段时间我们决定在我们的项目上运行Crucible。我们的项目使用TFS 2012.我们在TFS中使用一个名为' dev'作为主干,即开发人员提交的分支和原始代码所在的分支。第二个分支,其中发布代码名为' main' 我们的同行评审工作流程是:
我们的目标是改善步骤 2 和 3 。 Crucible是很好的工具,但它并不支持开箱即用的TFS,因此我们决定使用一些TFS桥。实际上,使用tfs-> svn或tfs-> git有两个主要选项。最后,我们决定使用tfs-> git bridge,因为在git中创建分支非常便宜并且它可能有用(它确实如此),因为我们正在考虑在git中使用分支来获取TFS中的搁置集。最后我们决定使用git。 到目前为止,我只知道将TFS转换为git的两个选项:
我们为实现目标而采取了一些措施: 首先,我们克隆了我们的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步,它可以工作几个月,我们很高兴。
我们的工作流程变为:
在使用此功能时,我发现了一些问题:
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
我已经创建了图片,这一切对我们的项目有何影响,可能会有所帮助:
答案 1 :(得分:2)
您可以将Mira和TFS与TaskTop集成,然后使用Visual Studio内置的代码审查工具。
我认为这些是您最好的选择。