【发布时间】:2014-05-18 22:24:42
【问题描述】:
我使用 TFS 和 Jira 来管理我的团队任务。 我想在开发过程中集成一个代码审查工具。
当我尝试使用坩埚时,我发现它不支持 TFS。
我想知道是否有一个好的和可靠的解决方案,使我能够使用 TFS 的坩埚。
补充,如果对 VS 和 JIRA 的代码审查工具有其他建议。
谢谢!
【问题讨论】:
标签: tfs jira jira-plugin
我使用 TFS 和 Jira 来管理我的团队任务。 我想在开发过程中集成一个代码审查工具。
当我尝试使用坩埚时,我发现它不支持 TFS。
我想知道是否有一个好的和可靠的解决方案,使我能够使用 TFS 的坩埚。
补充,如果对 VS 和 JIRA 的代码审查工具有其他建议。
谢谢!
【问题讨论】:
标签: tfs jira jira-plugin
前段时间,我们决定在我们的项目上运行 Crucible。我们的项目使用 TFS 2012。我们在 TFS 中使用一个名为“dev”的分支作为主干,即开发人员进行提交和原始代码所在的分支。发布代码所在的第二个分支称为“主” 我们的同行评审工作流程是:
我们的目标是改进步骤 2 和 3。 Crucible 是很棒的工具,但它不支持开箱即用的 TFS,因此我们决定使用一些 TFS 桥接器。实际上,使用 tfs->svn 或 tfs->git 有两个主要选项。最后,我们决定使用 tfs->git bridge,因为在 git 中创建分支非常便宜而且它可能会有所帮助(确实如此),因为我们正在考虑在 git 中使用分支来在 TFS 中搁置。最后我们下定决心使用 git。 到目前为止,我只知道将 TFS 转换为 git 的 2 个选项:
我们采取了一些步骤来实现目标: 1. 首先,我们将 TFS “dev” 分支克隆到 “dev” 存储库中。我们只需要这个分支,并且我们没有来自“主”分支的任何反向合并。我们曾尝试使用 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 参数,那么您根本就没有任何历史记录,因为 quick-clone 只会在您要求时复制历史记录。 克隆存储库后,我们编写了“脚本”并将其放入任务调度程序中,每 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
最后一个命令从 TFS 中的搁置集 'Shelveset Name Here' 在 git 中创建分支 'Branch_Shelveset_Name_Here'。搁置集的名称可以包含空格和一些转义字符,因此我们的“脚本”会清理这些情况。正如我所说,在 git 上创建分支非常便宜,因此我们对此没有任何问题。如果有东西被推入 git repo,我们调用坩埚 API 来刷新它。 顺便说一句:为了让 git repo 在网络中可见,我刚刚安装了 SCM-Server。 Crucible 已安装并配置为使用我们的域用户名/密码,因此我们也会收到电子邮件通知。因此,我们极大地改进了工作流程中的第 2 步和第 3 步,它运行了几个月,我们对此感到满意。
我们的工作流程变成了:
在处理这个问题时,我注意到了一些问题:
Issue1:如果您将新文件添加到项目中并将其搁置,您将不会在 git repo 中看到它,因为 git-tfs 找不到它的父提交。我不确定它是否是这个工具的错误,但最简单的解决方法是在现有父级的搁置集中至少有一个文件。例如,您添加了 2 个新文件并希望将其发送以供审核。无需使用这些文件创建搁置集,只需触摸 git repo 中已有的任何文件(使其在 Visual Studio 中挂起),最后您将能够创建包含三个文件的搁置集(2 个新文件 [添加] 和 1 个用于编辑 [编辑] )。在这种情况下,一切正常,git-tfs 可以将 TFS 的搁置集取消搁置到 git 分支中。也就是说,我们可以在坩埚中看到它。
Issue2:有一天,我们在 git repo 中的 HEAD 与“master”分支分离了。一旦发生这种情况,坩埚就没有看到新的变更集。我已经用命令修复了它:
git rebase HEAD master
我已经创建了这一切如何在我们的项目中运作的图片,可能会有所帮助:
【讨论】:
您可以将 Mira 和 TFS 与 TaskTop 集成,然后使用 Visual Studio 中内置的代码审查工具。
我认为这些是你最好的选择。
【讨论】: