本指南介绍 Plastic SCM 如何与各种控制跟踪工具(Bugzilla、Mantis、Trac、Jira、Axosoft、VersionOne、FogBugz、Rally、Polarion 和 codeBeamer)进行集成。
在本指南中,您还将了解如何编写您自己的 Plastic SCM 自定义扩展。
一旦配置了问题跟踪系统,用户将能够无缝地使用扩展和 Plastic SCM。这意味着用户将能够通过 Plastic GUI 查看相关的任务信息。
Plastic SCM 扩展允许两种不同的工作模式:
本节介绍使用 Plastic SCM Bugzilla 集成的步骤。
在本章中,您将学习如何在服务器端和客户端配置 Bugzilla 集成。
要设置 Bugzilla 扩展功能,请将脚本文件 plastic.cgi
(包含在 plasticscm_install_path/client/extensions/bugzilla
中)复制到 Bugzilla 安装文件夹。
根据服务器的操作系统,脚本文件的第一行可能需要更改:
#!/usr/bin/perl -wT
#!c:\perl\bin\perl.exe -wT
了解如何在 Windows、Linux 或 macOS 系统中配置 Bugzilla 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 Bugzilla 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 Bugzilla 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
bugzilla.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
bugzilla.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/bugzilla/bugzillaextension.dll" /> </Extensions>
Bugzilla Base URL
:指定安装并运行 Bugzilla 服务器的 URL。User name
:如果需要,输入用户名。Branch prefix
:如果要使用分支任务模式,建议指定此参数(但不是强制性的)。此分支前缀将用于把 Plastic 分支绑定到 Bugzilla 任务。通过使用这种工作模式,每个 Bugzilla 任务在创建新任务时都关联到一个 Plastic 分支。新分支的分支名称必须与配置的扩展前缀(如果已设置)以及 Bugzilla 上的数字标识符相匹配。
通过单击分支视图中的显示扩展信息按钮(),与分支相关的信息将显示在 Plastic GUI 的右侧面板上。通过选择一个分支,在 Plastic SCM 中将显示 Bugzilla 任务信息:编号或标识符、任务所有者、状态、标题和描述。
通过双击任务窗格或单击在浏览器中打开问题按钮(),系统将打开一个新的浏览器窗口,并显示 Bugzilla 任务的完整信息:
可设置 Plastic SCM 存储库,以便根据 Bugzilla 检查与任务关联的编号分支。仅当在 Bugzilla 中定义了 bug 号时,才允许该工作分支。此检查是对分支创建操作执行的,只适用于子分支。
为了在存储库上设置“分支创建检查”,请在所需的存储库上创建一个名为 plastic-enforce-task-branch 的属性。必须使用以下方法之一创建此属性:
创建此属性后,每次要在定义此属性的存储库上创建子分支时,扩展都会检查新分支的名称。如果该名称以任务前缀开头,则会选择其中包含的编号并询问 Bugzilla 是否有匹配的 bug 号。否则会打印错误并取消操作:
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 Bugzilla 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集链接到 Bugzilla 中的任务,此信息就可以显示在 Plastic SCM 的变更集视图中。当扩展信息面板可见时(),如果单击某个变更集,则 Plastic 将显示相关的 Bugzilla 任务:
用户还可以从 Bugzilla 扩展窗格中添加新任务或删除以前的任务。此外,通过双击与某个变更集关联的每个任务或单击在浏览器中打开问题按钮(),一个新的 Web 浏览器窗口将会打开并显示所选的 Bugzilla 任务。每当用户在 Bugzilla 中修改任务时,通过按 Bugzilla 扩展窗格上的刷新按钮即可在 Plastic GUI 上更新相应的新数据。
本节介绍使用 Plastic SCM Mantis 集成的步骤。此外还介绍了它的优点。
此扩展与 Mantis 0.19.4、1.0.0、1.0.8 及更高版本兼容。
要设置 Mantis 扩展功能,请将脚本文件 plastic.php
(包含在 plasticscm_install_path/client/extensions/mantis
中)复制到 Mantis 安装文件夹。
了解如何在 Windows、Linux 或 macOS 系统中配置 Mantis 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 Mantis 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 Mantis 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
mantis.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
mantis.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/mantis/mantisextension.dll" /> </Extensions>
Mantis Base URL
:指定安装并运行 Mantis 服务器的 URL。
User name
:此字段中必须填写有效的 Mantis 用户信息。
Branch prefix
:如果要使用分支任务模式,建议指定此参数(但不是强制性的)。此分支前缀将用于把 Plastic 分支绑定到 Mantis 任务。Encoding
:默认值是 UTF-8,适用于大多数语言。如果需要更改编码,请编辑此值。
默认配置的工作模式是分支任务,非常适合与“任务分支”模式搭配使用。在这种工作模式下会为每个要完成的任务创建一个新分支。
像往常一样,第一步是在 Mantis 中创建问题,这一步骤通常由项目经理完成,具体做法是单击“报告问题”选项,随后将打开一个对话框,其中包含要处理的新问题的信息,这些信息有标题、描述、严重性等。
创建问题后,Mantis 会为其分配一个编号。在本例中,Mantis 为任务分配了编号 4,如下图所示。用户可以从问题列表中选择一个问题(这些问题会根据状态显示为不同的颜色)并更改其状态,因此问题 4 的状态从 new 变为 assigned。
下一步是分配到任务的开发者必须创建一个新分支。此操作很简单,只需右键单击父分支并选择创建子分支选项,如下图所示:
为了将新分支链接到 Mantis 中的问题,开发者必须为分支提供相同的 Mantis 编号(在本例中为 4)并在前面添加分支前缀:
现在,用户可以在分支视图中的扩展信息面板()上查看与特定分支链接的问题的信息。
如果用户单击在浏览器中打开问题按钮()或双击 Mantis 任务,系统将打开包含相关分支问题的浏览器窗口。当用户更改问题的状态或任何其他字段时,通过刷新 Mantis 扩展即可显示新的信息。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 Mantis 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集链接到 Mantis 中的问题或任务,此信息就可以显示在 Plastic SCM 的变更集视图中。当扩展信息面板可见时(),如果单击某个变更集,则 Plastic 将显示相关的 Mantis 任务:
用户还可以从 Mantis 扩展窗格中添加新任务或删除以前的任务。此外,通过双击与某个变更集关联的每个任务或单击在浏览器中打开问题按钮(),一个新的 Web 浏览器窗口将会打开并显示所选的 Mantis 任务。每当用户在 Mantis 中修改任务时,通过按 Mantis 扩展窗格上的刷新按钮即可在 Plastic GUI 上更新相应的新数据。
本节介绍使用 Plastic SCM Trac 集成的步骤。此外还介绍了它的优点。
此扩展与 Trac 0.10 及以上版本兼容。
在本章中,您将学习如何在服务器端和客户端配置 Trac 集成。
要设置 Trac 扩展功能,必须将 XMLRPC 插件安装到 Trac 服务器中。此链接提供了有关如何下载、安装和验证是否已正确进行设置的信息。
使用 Trac 管理工具,为需要使用扩展的用户启用 XML_RPC 权限。如果此权限分配给“anonymous”用户,则每个用户都可以使用。
使用 Trac 扩展时,必须考虑几个服务器配置功能:
了解如何在 Windows、Linux 或 macOS 系统中配置 Trac 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 Trac 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 Trac 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
trac.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
trac.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/trac/tracextension.dll" /> </Extensions>
Base Trac URL
:指定安装并运行 Trac 服务器的 URL。
This server requires authentication
、User name
和 Password
:如果 Trac 服务器配置为基本身份验证“用户/密码”模式,则应启用 This server requires authentication
复选框并键入凭据以根据 Trac 服务器进行身份验证。
Branch prefix
:如果要使用分支任务模式,建议指定此参数(但不是强制性的)。此分支前缀将用于把 Plastic 分支绑定到 Trac 任务。默认配置的工作模式是分支任务模式,非常适合与“任务分支”模式搭配使用。在这种工作模式下会为每个要完成的任务创建一个新分支。
像往常一样,第一步是在 Trac 中创建问题。这一步骤通常由项目经理完成。具体做法是单击“新建支持票证”选项,随后将打开一个对话框,其中包含要处理的新问题的信息。这些信息有标题、描述、严重性等。
创建任务或支持票证后,Trac 为其分配一个编号(下例图片中的编号 4)。
现在,开发者必须处理分配给他/她的任务。因此,他们将创建新分支(此操作很简单,只需右键单击父分支并选择创建子分支选项),如下图所示。为了将新分支链接到 Trac 中的问题,其名称必须与针对 Trac 扩展配置的分支前缀(如果已定义)和 Trac 问题编号(本例中的问题编号为 4)相匹配。因此,如果分支前缀设置为“scm”,则分支名称 scm004 将链接到 Trac 支持票证 #4。
通过单击显示扩展信息按钮(),即可显示分支的扩展信息。在分支视图中选择一个分支时,右侧窗格将显示相关任务/缺陷的信息:编号、已将任务分配到的所有者或开发者、状态、标题和注释。
通过双击 Trac 信息任务或按下在浏览器中打开问题按钮(),系统将打开一个显示相关分支任务的新浏览器窗口,并显示 Trac 任务的完整信息。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 Trac 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集链接到 Trac 中的支持票证或任务,此信息就可以显示在 Plastic SCM 的变更集视图中。当扩展信息面板可见时(),如果单击某个变更集,则 Plastic 将显示相关的 Trac 任务:
用户还可以从 Trac 扩展窗格中添加新任务或删除以前的任务。此外,通过双击与某个变更集关联的每个任务或单击在浏览器中打开问题按钮(),一个新的 Web 浏览器窗口将会打开并显示所选的 Trac 任务。每当用户在 Trac 中修改任务时,通过按 Trac 扩展窗格上的刷新按钮即可在 Plastic GUI 上更新相应的新数据。
本节介绍设置 Jira 和 Plastic SCM 以协同工作所需的步骤。
在本章中,您将学习如何在服务器端和客户端配置 Jira 集成。
默认情况下,新字段是空的,并且在获取内容之前不会显示在配置的屏幕中。
在 Jira Cloud 中,默认启用“接受远程 API 调用”选项。因此,Jira Cloud 用户可以跳过此步骤。
完成这些步骤后,Jira 服务器便准备好了接受 Plastic SCM 集成。
了解如何在 Windows、Linux 或 macOS 系统中配置 Jira 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 Jira 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 Jira 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
jira.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
jira.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/jira/jiraextension.dll" /> </Extensions>
Host
:指定 Jira 服务器所在的 URL。请注意,该 URL 必须包含运行 Jira 服务器的端口。
User name
和 Password
:指定用于登录 Jira 并记录更改的 Jira 凭据。
如果使用 Jira Cloud,User name
必须是帐户的电子邮件地址,Password
必须是 API 令牌。您可以通过他们的官方文档了解如何为 Atlassian Cloud 帐户生成 API 令牌。
Branch prefix
:如果要使用分支任务模式,建议指定此参数(但不是强制性的)。此分支前缀将用于把 Plastic 分支绑定到 Jira 任务。Project Key
:指定相应问题将与 Plastic 分支相关的 Jira 项目的键。
Custom Field ID
:此参数是用于记录 Jira 任务的 Plastic 签入信息的自定义字段的标识符。Jira 在创建此字段时会分配自定义字段 ID,此处只需添加这个字段 ID。
Next-gen 项目不支持该字段。
请将 Custom Field ID
留空以将签入信息添加为注释。
Use LDAP credentials if available
:如果 Plastic SCM 客户端身份验证模式为 LDAP,则可以通过选中此参数将 Jira 扩展配置为重复使用这些凭据来登录 Jira。请记住,Plastic SCM 服务器和 Jira 必须共享相同的 LDAP 用户目录才能使用此功能。
Use default proxy credentials
:针对所有 Jira 扩展连接使用默认凭据来自动设置代理凭据。
Issue query limit
:此参数用于在“创建分支”对话框中手动调整返回结果的最大数量。Resolved issue states
:保存一个被视为“已解决”状态的状态名称列表(以逗号分隔的列表)。Issue types
:允许按类型筛选 Jira 扩展检索到的问题。只需输入以逗号分隔的问题类型列表。此字段很有用,例如,如果只想查看 Plastic SCM Bug 或任务问题,可筛选掉其余问题。jira.conf
文件中:
Name=Issue types;Value=Bug,Task;Type=Text;IsGlobal=False
Fields mapping
:允许映射 Jira 问题中的字段,这些字段将显示在分支视图或变更集视图的任务信息面板上。Status transition
:允许根据变更集注释来更改关联问题的状态。此功能的作用是将问题同时绑定到分支和变更集。默认配置的工作模式是分支任务模式,非常适合与“任务分支”模式搭配使用。在这种工作模式下会为每个要完成的任务创建一个新分支。
为了开始使用 Plastic SCM 和 Jira 扩展,必须在问题跟踪系统上创建任务,具体方法是单击“创建问题”选项并键入与新问题相关的数据,例如名称、关联项目、摘要,等等。
Jira 将为新创建的问题分配一个编号,该编号与处理该任务时分配给 Plastic 分支的编号相同,在本例中,我们创建的问题编号是 1。
然后,分配到该问题的开发者开始处理问题。他们将使用 Plastic SCM GUI 客户端创建一个新分支。有两个选项可以创建链接到 Jira 的新分支:
通过单击分支视图中的显示扩展信息按钮(),与分支相关的信息将显示在 Plastic GUI 的右侧面板上。选择 Plastic 分支会显示 Jira 问题信息:
通过双击它或按下在浏览器中打开问题按钮(),系统将打开一个显示相关分支问题的新浏览器窗口,并显示 Jira 任务的完整信息。当用户更改问题的任何字段时,通过单击 Jira 扩展面板的刷新按钮即可显示新的信息。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 Jira 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集已链接到 Jira 中的问题或任务,此信息就可以显示在 Plastic SCM 的变更集视图中。当扩展信息面板可见时(),通过单击某个变更集即可显示相关的 Jira 问题:
用户还可以从 Jira 扩展信息添加新任务或删除以前的任务。此外,通过双击与某个变更集关联的每个问题或单击在浏览器中打开问题按钮(),一个新的浏览器窗口将会打开并显示所选的 Jira 任务。每当用户在任务跟踪工具中修改问题时,通过按 Jira 扩展窗格上的刷新按钮即可在 Plastic GUI 上更新相应的新数据。
除了能够在 Plastic SCM 中显示绑定到分支或变更集的 Jira 数据之外,该集成还会在 Jira 中保留修改相关项的记录。已签入更改且该集成处于活动状态后,Jira 将使用分支任务或变更集任务工作模式在“Plastic SCM”自定义字段中显示受影响的项:
Plastic SCM 还允许 Jira 多项目配置。这个想法是让每个分支显式包含其相关任务的项目密钥,而不是为所有分支定义一个全局项目密钥。
配置 Jira 服务器后,即可配置 Plastic SCM 客户端以使用多项目配置。
要在 Plastic SCM 客户端上配置 Jira 扩展,请单击 Plastic SCM GUI 主窗口的首选项选项卡。随即将打开新的对话窗口。单击问题跟踪选项卡,选择单选按钮绑定到此问题跟踪系统,然后选择 Atlassian Jira。
jira.conf
文件中的必填值。
必须在 Jira 上创建项目和任务:
现在是时候创建 Plastic SCM 分支了。请注意,我们选择“JIRA_”前缀来标识与 Jira 任务相关的分支。
当我们使用多项目配置时,区分哪个分支与每个项目相关很重要。如下图所示,我们使用以下方案来命名 Plastic SCM 分支:branchPrefix_projectShortName-taskID。
例如,Jira 任务 RI-1 的分支将是 JIRA_RI-1;而对于我们的 Jira 项目 FG (Forms generator),将是 JIRA_FG-1。
Jira 扩展允许映射 Jira 问题中的字段,这些字段将显示在 Plastic SCM 分支视图或变更集视图的任务信息面板上。
要定义 Jira 字段映射功能,必须配置字段映射参数。为此,请通过单击 Plastic SCM GUI 主窗口的首选项选项卡打开 Jira 扩展配置。然后,单击问题跟踪选项卡。向下滚动参数列表,直到出现字段映射配置参数:
此参数会存储由“|”(竖线)字符分隔的字段名称对 (from->to)。参数语法如下:
[ jira_field_name -> plastic_property_name [ | jira_field_name -> plastic_property_name [ | ... ] ] ]
jira.conf
文件中的必填字段。
例如,以下是 Jira 字段映射的有效配置:
issue.Fields.Project.Name->Description|issue.Fields.Reporter.Name->Owner|issue.Fields.Description->Title
在本示例中,扩展信息面板“Atlassian Jira 扩展”上显示的值如下:显示的描述将包含项目密钥,显示的所有者将是创建相应问题的 Jira 用户,显示的标题将是 Jira 问题描述。
“from->to”对中的 to
属性描述了 plastic_property_name
所指的 Plastic SCM 字段。扩展信息面板上可用 Plastic SCM 字段的列表如下:
from
属性描述了 Jira 问题中的字段 (jira_field_name
),其值将被读入字段 to
,如上所述。下表详细列出了 Jira 扩展中 from
属性的可用字段列表:
from 字段值 |
字段数据类型 |
---|---|
issue.Fields.Assignee.Name | String |
issue.Fields.AttachmentNames | String[] |
issue.Fields.ComponentNames | String[] |
issue.Fields.Created | DateTime |
issue.Fields.Description | String |
issue.Fields.DueDate | DateTime |
issue.Fields.Environment | String |
issue.Key | String |
issue.Fields.Priority.Name | String |
issue.Fields.Project.Name | String |
issue.Fields.Reporter.Name | String |
issue.Fields.Resolution | String |
issue.Fields.Status.Name | String |
issue.Fields.Summary | String |
issue.Fields.Issuetype.Name | String |
issue.Fields.Updated | DateTime |
issue.Fields.Votes.Number | Long |
可以使用 customFieldValues
修饰符访问自定义 Jira 字段的值,就像在此示例映射中一样:
customFieldValues[10000]->Description
[ ]
之间的索引是可以从 Jira 获取的自定义字段 ID,如前几节所述。在示例 10000 中,只需提供自定义字段 ID 号。
Jira 问题跟踪程序扩展能够根据变更集注释来更改分支/变更集的相关问题的状态。
为此,您可以定义自己的关键字/状态映射。如果变更集注释中存在关键字,则问题状态将更改为已定义状态。
映射的格式如下:
KEY-VALUE|KEY-VALUE
例如:
[FIXED]-Ready for QA|[WONTFIX]-Done
上面的示例表示,如果变更集的注释中包含关键字 [FIXED](带方括号),则问题状态将更改为 Ready for QA。
此功能的作用是将问题同时绑定到分支和变更集。
请记住,您的 Jira 工作流程必须允许状态之间的转换。
不需要为此设置 Plastic SCM 自定义字段 ID。
了解如何在 Windows、Linux 或 macOS 系统中配置状态转换功能。
jira.conf
文件。
Value
参数中的文本替换为所需的 KEY-VALUE 对:
Name=Status transitions;Value=[FIXED]-Ready for QA|[WONTFIX]-Done;Type=Text;IsGlobal=True
如果需要使用 Plastic SCM Axosoft 集成,请按照本节中的步骤操作。
此扩展与 Axosoft v14 及更高版本兼容。
在本章中,您将学习如何在服务器端和客户端配置 Axosoft 集成。
要设置 Axosoft 扩展功能,需要向 Plastic SCM 提供 Axosoft 服务器基本 URL。
Plastic SCM 客户端配置 Axosoft 集成时所需的另外两个配置参数是 client-id
和 client-secret
参数。要获得这些值,首先需要转到“工具”菜单下的“系统选项”选项:
在“系统设置”窗口中,单击“Axosoft API 设置”选项卡。在此视图下,选中“启用 API”复选框并单击“管理 API 密钥”按钮。
在新窗口中,单击“添加”按钮以获取将用于识别和验证 Plastic SCM 与 Axosoft 集成的两个值。键入所需的“应用程序名称”,复制“客户端 ID”和“客户端密码”值,然后单击“保存”按钮:
保存 API 密钥后,就可以创建一个自定义字段,以允许 Plastic SCM 记录在与 Axosoft 问题相关的每个签入操作中所做的所有更改。
要允许此操作,必须在 Axosoft 中创建一个新的自定义字段。为此,请转到“工具”菜单并选择“字段”子菜单下的“自定义字段”选项:
在新窗口中的“Bug”选项卡下,单击“添加”按钮,然后键入 Plastic SCM 作为新的自定义字段并选择“大文本”类型:
保存新的自定义字段以供在下一节的 Plastic SCM 客户端配置中使用。
有关 Axosoft 服务器配置的更多信息,请参阅 Axosoft 安装中包含的手册或 Axosoft 网站。
了解如何在 Windows、Linux 或 macOS 系统中配置 Axosoft 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 Axosoft 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 Axosoft 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
ontime.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
ontime.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/ontime/ontimeextension.dll" /> </Extensions>
Axosoft Root URL
:正如之前在服务器主题中所介绍的,Plastic SCM Axosoft 扩展需要这个值才能正常运行。
User
和 Password
:每个 Plastic SCM 用户都必须拥有一个 Axosoft 帐户并使用 Axosoft 凭据来允许 Plastic 与 Axosoft 服务器连接。
Branch prefix
:如果将 Plastic SCM 配置为使用分支任务模式,用户将能够配置多个分支前缀以将它们绑定到多个 Axosoft 对象。例如,如果用户启用了 Axosoft 缺陷和 Axosoft 任务之间的映射,则名称以 def 开头的分支将链接到 Axosoft 缺陷,而名称以前缀 task 开头的分支将链接到 Axosoft 任务。Client ID
和 Client Secret
:这些字段中必须填写从 Axosoft 管理面板生成的令牌。请参阅服务器主题以了解更多信息。
Plastic SCM custom field
:此参数是在 Axosoft 上创建的自定义字段,用于记录 Plastic SCM 签入信息。
Pending status list
:您可以使用此字段,通过输入逗号分隔值字符串来编辑被视为“待定”状态的状态列表(影响“创建分支”对话框中显示的任务列表)。
默认配置的工作模式是分支任务模式,非常适合与“任务分支”模式搭配使用。在这种工作模式下会为每个要完成的任务创建一个新分支。
要开始使用 Plastic SCM 及其 Axosoft 扩展,必须在问题跟踪系统中创建缺陷。为此,请单击“添加”菜单并选择“完全添加”选项,如下图所示:
在“添加 Bug”窗口中,必须填写新任务的名称、优先级、状态、分配的工程师等信息。保存新缺陷后,Axosoft 将为其指定一个标识号,供分配的开发者在创建 Plastic SCM 分支以处理该任务时使用。
然后,分配给该问题的开发者开始处理问题,即通过 Plastic SCM GUI 客户端创建一个新分支。请注意,新分支的名称必须与针对 Plastic SCM Axosoft 扩展配置的分支前缀(如果已定义)相匹配,并后跟要链接的由 Axosoft 分配的问题编号。
通过单击分支视图中的显示扩展信息按钮(),与分支相关的信息将显示在 GUI 的右侧,如以下屏幕截图所示。选择分支时会显示 Axosoft 缺陷的详细信息:名称、所有者、状态、标题和描述。
通过双击它或按下在浏览器中打开问题按钮(),系统将打开一个包含相关分支任务的新 Web 浏览器窗口,并会显示 Axosoft 任务的完整信息。当用户更改问题的状态或任何其他字段时,通过单击 Axosoft 扩展的刷新按钮即可显示新的信息。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 Axosoft 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集已链接到 Axosoft 缺陷或任务,变更集视图中便会显示扩展信息()。用户还可以通过 Axosoft 扩展面板添加新任务或删除以前的任务;此外,通过双击每个问题或单击在浏览器中打开问题按钮(),系统将打开一个包含相关 Axosoft 问题的新 Web 浏览器窗口。每当用户在任务跟踪工具中修改问题时,通过按 Axosoft 扩展窗格上的刷新按钮即可在 Plastic GUI 上更新相应的新数据。
除了显示与 Plastic SCM 集成的分支及变更集关联的问题的信息外,此扩展还会在 Axosoft 中记录与相关问题有关的每个签入操作。
因此,用户可以看到每个签入操作是如何在 Axosoft 任务中注册的:
本节介绍使用 Plastic SCM VersionOne 集成的步骤。
此扩展与 VersionOne 7.2 及更高版本兼容。
在本章中,您将学习如何在服务器端和客户端配置 VersionOne 集成。
无需在服务器端对 Plastic SCM VersionOne 扩展配置进行任何更改。
了解如何在 Windows、Linux 或 macOS 系统中配置 VersionOne 集成。
要在 Windows 机器的 Plastic SCM 客户端上配置 VersionOne 扩展,请执行以下操作:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 VersionOne 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
versionone.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
versionone.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/versionone/versiononeextension.dll" /> </Extensions>
Base URL
:指定安装并运行 VersionOne 服务器的 URL。
User
和 Password
:如果未选择 Use integrated authentication
选项,则必须在这些字段中输入有效的 VersionOne 用户信息。
Defect prefix
、Task prefix
、Test prefix
、Story prefix
:可链接的 VersionOne 对象包括缺陷、任务、测试和情景。Use integrated authentication
:此选项告诉 Plastic SCM 是否会通过 Windows 域用户来解析身份验证。
默认的工作模式是分支任务,非常适合与“任务分支”模式搭配使用;在这种模式下会为每个任务创建一个新分支。
要开始使用 Plastic SCM 及其 VersionOne 扩展,第一步是在 VersionOne 中创建任务。这一步骤通常由项目经理完成,具体做法是单击 VersionOne Web 界面上的“添加缺陷”、“添加问题”、“添加待办事项”和“添加请求”快捷方式。随后将打开一个新的对话窗口以输入新任务的数据。VersionOne 为任务分配编号(从 1000 开始)。注意这一点非常重要,因为分支名称必须包含为该任务类型配置的前缀以及 VersionOne 分配的编号。
创建问题后,VersionOne 会为其分配一个编号。在下图中,我们可以看到创建的项列表:
然后,分配到任务的开发者开始处理任务。他们必须创建新分支(此操作很简单,只需右键单击父分支并选择创建子分支选项),如下图所示。此外,为了将该分支链接到 VersionOne 中的任务,必须为该分支指定相同的编号(切记,此编号始终大于 1000):
现在,用户只需访问分支视图中的扩展信息()并选择该分支,即可查看这些问题的信息。然后,视图右侧会显示一个新窗格,其中会显示 VersionOne 扩展信息:任务编号、所有者、状态等。
通过双击与某个分支关联的任务或单击在浏览器中打开问题按钮(),一个新的 Web 浏览器窗口将会打开。当用户更改问题的状态或任何其他字段时,通过刷新 VersionOne 扩展即可显示新的信息。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 VersionOne 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集已链接到 VersionOne 任务,变更集视图中便会显示扩展信息()。用户还可以从 VersionOne 扩展信息添加新任务或删除以前的任务。此外,通过双击与某个变更集关联的每个问题或单击在浏览器中打开问题按钮(),一个包含 VersionOne 的浏览器窗口将会打开。每当用户修改 VersionOne 中的问题时,通过刷新 VersionOne 扩展信息即可在 Plastic SCM 中显示该问题。
本节介绍使用 Plastic SCM FogBugz 集成的步骤。
此扩展与 FogBugz 7.2 及更高版本兼容。
无需在服务器端对 Plastic SCM FogBugz 扩展进行任何更改。
了解如何在 Windows、Linux 或 macOS 系统中配置 FogBugz 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 FogBugz 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 FogBugz 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
fogbugz.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
fogbugz.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/fogbugz/fogbugzextension.dll" /> </Extensions>
FogBugz URL
:指定安装并运行 FogBugz 服务器的 URL。
User name
和 Password
:这些字段中必须填写有效的 FogBugz 用户信息。
Branch prefix
:如果要使用分支任务模式,建议指定一个 Branch prefix
(但不是强制性的)。此分支前缀将用于把 Plastic 分支绑定到 FogBugz 任务。Enable checkin log
:此选项允许 FogBugz 记录在 Plastic SCM 中执行的所有签入操作。
默认配置的工作模式是分支任务,非常适合与“任务分支”模式搭配使用;在这种模式下会为每个任务创建一个新分支。
要开始使用 Plastic SCM 及其 FogBugz 扩展,必须在 FogBugz 中创建项目的任务。这一步骤通常由项目经理完成,只需单击“新建案例”选项即可。随后将打开一个新的对话窗口以键入新任务的数据。
创建问题后,FogBugz 会为其分配一个编号。然后,分配到该任务的开发者开始处理任务。他们将创建新分支(此操作很简单,只需右键单击父分支并选择创建子分支选项),如下图所示。为了将该分支链接到 FogBugz 中的任务,分支名称必须与配置的分支前缀(如果已定义)以及相同的任务编号相匹配。
现在,用户只需访问分支视图中的扩展信息()并选择该分支,即可查看这些问题的信息。视图右侧会显示一个新窗格,其中会显示 FogBugz 扩展信息:任务编号、所有者等。
通过双击它或单击在浏览器中打开问题按钮(),一个新的 Web 浏览器窗口将会打开。这个窗口将显示 FogBugz 任务的完整信息。当用户更改问题的状态或任何其他字段时,通过单击 FogBugz 扩展的刷新按钮即可显示新的信息。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 FogBugz 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集已链接到 FogBugz 中的问题或任务,变更集视图中便会显示扩展信息()。用户还可以从 FogBugz 扩展信息添加新任务或删除以前的任务。此外,通过双击与某个变更集关联的每个问题或单击在浏览器中打开问题按钮(),一个包含 FogBugz 的浏览器窗口将会打开。每当用户修改 FogBugz 中的问题时,通过刷新 FogBugz 扩展信息即可在 Plastic 中显示该问题。
除了显示与 Plastic SCM 集成的分支及变更集关联的问题的信息外,此扩展还会在 FogBugz 中记录与相关问题有关的每个签入操作,但前提是已在客户端部分中选中启用签入日志复选框。
因此,用户可以通过单击“签入 - 单击以列出”链接,看到每个签入操作是如何在 FogBugz 任务中注册的:
本节介绍使用 Plastic SCM Rally Software Development 集成的步骤。
在本章中,您将学习如何在服务器端和客户端配置 Rally 集成。
要设置 Rally 扩展功能,需要一个有效的 Rally 帐户。由于 Rally 是基于 Web 的服务,因此无需在服务器端或本地进行设置,所有针对 Rally 的操作均通过 Internet 完成。
了解如何在 Windows、Linux 或 macOS 系统中配置 Rally 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 Rally 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 Rally 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
rally.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
rally.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/rally/rally.dll" /> </Extensions>
Rally URL
:指定运行 Rally 服务器的 URL。
User name
和 Password
:对于已配置的 Rally 服务器,必须在这些字段中输入有效的 Rally 用户信息。
Task prefix
、Defect prefix
、Test case prefix
和 User story prefix
:这些是可链接到 Plastic SCM 的 Rally 对象。为了使用这种工作模式,第一步是在 Plastic SCM Rally 扩展上设置该模式,按照上一节的指示操作,或者保留适用于该模式的默认配置。
要开始使用 Plastic SCM 及其 Rally 扩展,必须创建 Rally 中的对象。
可在专门的选项卡中通过单击“新建缺陷”操作创建缺陷。其余的 Rally 对象(例如“任务”、“测试用例”和“用户情景”)也是如此。
在“创建缺陷”窗口中,必须添加新任务的名称、优先级、状态等信息。保存新缺陷后,Rally 将为其指定一个标识字符串,供分配的开发者稍后在创建 Plastic 分支以处理该任务时使用。前缀 ID 将取决于对象类型。例如,如果用户创建了一个新任务且这是一个缺陷,则 ID 可能是 TA4 或 DE4。
通过单击显示扩展信息按钮(),与分支相关的信息将显示在 GUI 的右侧,如以下屏幕截图所示。选择分支时会显示 Rally 对象的详细信息:
通过双击它或单击在浏览器中打开问题按钮(),一个包含相关分支任务的 Web 浏览器窗口将会打开。每当用户完成任务并更改其状态或任何其他字段时,为了查看新值,用户只需在 Plastic 分支扩展信息中进行刷新。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 Rally 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集已链接到 Rally 对象,其信息就会显示在变更集视图中,并且用户还可以添加 Rally 对象的新链接或删除以前的链接。此外,通过双击每个问题或单击在浏览器中打开问题按钮(),一个包含 Rally 相关对象的 Web 浏览器窗口将会打开。每当用户从问题跟踪工具中修改缺陷、任务、测试用例或用户情景时,通过单击 Rally 扩展的刷新按钮即可加载他们的更改。
本节介绍使用 Plastic SCM Polarion Software Development 集成的步骤。
要设置 Polarion 扩展功能,必须事先完成一些任务:
com.codicesoftware.platform.repository.external.plasticscm
目录从 Plastic SCM 安装目录的 client/polarion
文件夹复制到 Polarion 扩展文件夹 [Polarion installation]/polarion/extensions
。
client
文件夹复制到该服务器端上。这种情况下,在 cm 可执行文件所在的 client
文件夹中必须存在有效的 client.conf
。
了解如何在 Windows、Linux 或 macOS 系统中配置 Polarion 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 Polarion 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 Polarion 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
polarion.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
polarion.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/polarion/polarionextension.dll" /> </Extensions>
Polarion Base URL
:指定安装并运行 Polarion 服务器的 URL。
User name
和 Password
:这些字段中必须填写有效的 Polarion 用户信息。
Branch prefix
:如果要使用分支任务模式,建议指定此参数(但不是强制性的)。此分支前缀将用于把 Plastic 分支绑定到 Polarion 任务。Work Item Statuses
:这些是使用从任务模式创建新分支时将显示在“待定任务”列表中的工作项类型。使用变更集任务模式链接新修订时,也将检查这些值。Open Work Item Status
:如果用户使用从任务模式创建新分支并选中 Mark as open in issue tracker
选项,则 Polarion 任务将具有此处的新状态。
Repository ID
:此参数与 Polarion 服务器端配置的“ID”字段相同。
Default Repository
:此字段指示所选存储库是否为默认存储库。如果不选中此字段,那么您将支持多个存储库。
默认配置的工作模式是分支任务模式,非常适合与“任务分支”模式搭配使用。在这种工作模式下会为每个要完成的任务创建一个新分支。
为了开始使用 Plastic SCM 和 Polarion 扩展,必须在问题跟踪系统上创建任务,具体方法是创建与 Polarion 项目相关联的新工作项:
键入与新任务相关的数据,例如名称、描述、优先级等,然后单击“创建”按钮:
Polarion 将为新创建的任务分配一个编号,该编号与处理该任务时分配给 Plastic 分支的编号相同:
然后,分配到该问题的开发者开始处理问题。他/她将使用 Plastic SCM GUI 客户端创建一个新分支。有两个选项可以创建链接到 Polarion 的新分支:
在此模式下,用户将:
正如您在客户端配置部分中看到的那样。
通过单击分支视图中的显示扩展信息按钮(),与分支相关的信息将显示在 Plastic GUI 的右侧面板上。选择一个分支会在 Plastic SCM 中显示 Polarion 问题信息:
通过双击它或按下在浏览器中打开问题按钮(),系统将打开一个显示相关分支问题的新浏览器窗口,并显示 Polarion 任务的完整信息。
如果用户更改 Polarion 中的工作项的任何值,则通过单击 Polarion 扩展面板的刷新按钮即可在 Plastic 中显示新的信息。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须配置 Polarion 扩展并选择将问题绑定到 Plastic 变更集选项,如前面客户端配置部分所述。
工作流程将如下所述:
在以下示例中,两个 Polarion 工作项链接到将要签入的更改:
Polarion 扩展将检查要链接的工作项的状态。只允许链接在客户端配置的工作项状态字段中定义了状态的 Polarion 工作项。正如您之前所见,配置的工作项状态为草稿和未完成状态。因此,不允许任何其他状态:
一旦变更集已链接到 Polarion 中的工作项,此信息就可以显示在 Plastic SCM 的变更集视图中。当扩展信息面板()可见时,通过单击某个变更集即可显示相关的 Polarion 工作项。
用户还可以从 Polarion 扩展信息添加新任务或删除以前的任务。此外,通过双击与某个变更集相关的每个问题,一个新的浏览器窗口将会打开,其中显示所选的 Polarion 工作项。每当用户在任务跟踪工具中修改问题时,通过按 Polarion 扩展窗格上的刷新按钮即可在 Plastic GUI 上更新相应的新数据。
Plastic SCM Polarion 集成支持分布式场景:链接的修订将使用变更集 GUID 而不是变更集 ID(整数)。
但是,在将变更集复制到 Polarion 中配置的 Plastic SCM 服务器之前,变更集信息(例如变更集注释)将不可用。
正如您所见,可以通过相关的分支或变更集在 Plastic 中获取所有 Polarion 工作项信息。此外,还可以在 Polarion 端获取与在 Plastic 中创建的修订相关的所有信息。这样,Polarion 集成会保留已修改项的记录:已在 Plastic 中签入更改且该集成处于活动状态后,Polarion 将使用分支任务模式在“已链接修订”部分中显示受影响的项:
或使用变更集任务工作模式:
当 Plastic 修订正确链接到 Polarion 时,您将看到修订图标包含一个绿色项目符号:
如果需要使用 Plastic SCM codeBeamer 集成,请按照本节中的步骤操作。
了解如何在服务器端和客户端配置 codeBeamer 集成。
无需在服务器端对 Plastic SCM codeBeamer 扩展配置进行任何更改。
但如果想在 codeBeamer 配置中添加 Webhook 的机密令牌,请按照以下步骤操作:
"scc"
节点,请添加该节点。
"scc"
节点下不存在 "plasticscm"
节点,请添加该节点。
"plasticscm"
节点下添加 "secretToken" : "<secret_token_of_the_webhook>"
。
了解如何在 Windows、Linux 或 macOS 系统中配置 codeBeamer 集成。
按照以下步骤在 Windows 机器的 Plastic SCM 客户端上配置 codeBeamer 扩展:
plastic-global-config
存储库。
Repositories
。
可使用以下方法之一,在 Linux 或 macOS 机器的 Plastic SCM 客户端上配置 codeBeamer 扩展:
$HOME/.plastic4
下创建结构 issuetrackers/server_port/repository
,其中 repository
是以下值之一:
allrepos
,这意味着您的所有存储库都将链接到问题跟踪程序。
codebeamer.conf
示例配置文件复制到新创建的路径中。plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
然后,您将获得类似以下的内容:
codebeamer.conf
文件:
WorkingMode
参数以分配以下值之一:TaskOnBranch
或 TaskOnChangeset
。
client.conf
文件以添加以下键:
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/codebeamer/codebeamerextension.dll" /> </Extensions>
codeBeamer URL
:指定安装并运行 codeBeamer 服务器的 URL。
User name
和 Password
:这些字段中必须填写有效的 codeBeamer 用户信息。
Branch prefix
:如果要使用分支任务模式,建议指定此参数(但不是强制性的)。此分支前缀将用于把 Plastic 分支绑定到 codeBeamer 任务。Enable SCM log
:如果您的 codeBeamer 版本支持外部 SCM 集成,请选中此复选框。
Secret token
:如果您的 codeBeamer 服务器中配置了机密令牌,请输入该令牌值。
默认配置的工作模式是分支任务模式,非常适合与“任务分支”模式搭配使用。在这种工作模式下会为每个要完成的任务创建一个新分支。
要开始使用 Plastic SCM 及其 codeBeamer 扩展,必须在 codeBeamer 中创建项目的任务:
保存新任务后,codeBeamer 会为该任务指定一个标识号。此号码将供分配的开发者在创建 Plastic SCM 分支以处理该任务时使用:
然后,分配到该任务的开发者开始处理任务。他们将使用 Plastic SCM GUI 客户端创建一个新分支。有两个选项可以创建链接到 codeBeamer 的新分支:
通过单击分支视图中的显示扩展信息按钮(),与分支相关的信息将显示在 Plastic GUI 的右侧面板上。选择 Plastic 分支会显示 codeBeamer 任务信息:
通过双击任务或按下在浏览器中打开问题按钮(),系统将打开一个新的 Web 浏览器窗口,其中显示相关 codeBeamer 任务的完整信息。当用户更改任务的任何字段时,通过单击 codeBeamer 扩展面板的刷新按钮即可显示新的信息。
要将 Plastic SCM 配置为在变更集任务工作模式下运行,用户必须在配置 codeBeamer 扩展时选择将问题绑定到 Plastic 变更集选项,如前面客户端部分所述。
工作流程将如下所述:
一旦变更集链接到 codeBeamer 中的任务,此信息就可以显示在 Plastic SCM 的变更集视图中。当扩展信息面板可见时(),如果单击某个变更集,则 Plastic 将显示相关的 codeBeamer 任务:
用户还可以从 codeBeamer 扩展窗格中添加新任务或删除以前的任务。此外,通过双击与某个变更集关联的每个任务或单击在浏览器中打开问题按钮(),一个新的 Web 浏览器窗口将会打开并显示所选的 codeBeamer 任务。每当用户在 codeBeamer 中修改任务时,通过按 codeBeamer 扩展窗格上的刷新按钮即可在 Plastic GUI 上更新相应的新数据。
除了显示与 Plastic SCM 集成的分支及变更集关联的问题的信息外,此扩展还会在 codeBeamer 中记录链接到这些问题的每个签入操作。
这样就可以看到每个签入操作是如何在 codeBeamer 上注册的:
可以在服务器中设置全局文件配置,以便所有客户端默认具有相同的设置。这对于设置默认全局参数(如连接字符串)并让用户指定其特定凭据很有用。
在服务器端创建全局配置后,当 Plastic GUI 启动时,服务器配置将下载到客户端。
要在服务器中设置全局配置,请创建一个名为 plastic-global-config 的存储库。此存储库将具有明确定义的结构,其中包含将应用于存储库并由 Plastic 用户使用的问题跟踪程序扩展的配置文件。
plastic-global-config 存储库将具有以下结构:
/repname/issuetrackers/extension_configuration_file.conf
。/allrepos/issuetrackers/extension_configuration_file.conf
。/myrepo-mysubrepo/issuetrackers/extension_configuration_file.conf
plastic-global-config 存储库可以配置多个问题跟踪系统。Plastic 客户端将首先加载用户正在处理的存储库的特定配置。如果特定配置不存在,则将加载 allrepos
配置。
要设置全局扩展配置,第一步是在服务器中创建 plastic-global-config 存储库(如果该存储库还不存在,因为先前创建该存储库只是为了设置全局文件配置):
然后,该存储库必须具有前文所述的所需结构。在以下示例中,vb44 存储库将链接到 Bugzilla,而其余存储库将链接到 Jira:
plasticscm_install_path/client/extensions/config_samples
文件夹中。您必须添加并更新您需要的参数。
当客户端 GUI 启动时,每个服务器配置都会下载到用户本地目录下将会自动创建的隐藏工作区中(位于 plastic4
目录,即 Linux/Mac 系统上的 $HOME/.plastic4
下或 Windows 上的 C:\Users\user\AppData\Local\plastic4
下)。例如:C:\Users\user\AppData\Local\plastic4\globalconfig\server_port
。
如果需要,可以使用每个客户端使用的凭据对问题跟踪程序配置进行自定义。这样,当用户在 Plastic SCM 客户端的首选项对话框中打开问题跟踪选项卡时,系统将自动为链接的问题跟踪程序加载这些通用和全局值,用户只需输入凭据信息即可正确登录问题跟踪系统。
这些用户凭据将保存在用户本地目录中(位于 plastic4
目录(Linux/Mac 系统上的 $HOME/.plastic4
下或 Windows 上的 C:\Users\user\AppData\Local\plastic4
下))。例如:C:\Users\user\AppData\Local\plastic4\issuetrackers\server_port\repname\extension_configuration_file.conf
Plastic SCM 包括一些“开箱即用”的问题跟踪程序集成扩展,您可以使用它们连接最常用的问题跟踪和项目管理系统。
这些“开箱即用”的扩展使 Plastic SCM 能够显示有关链接到分支资源管理器、变更集视图或分支视图中的分支(推荐)或变更集的任务信息。这样,如果为每个任务模式实现一个分支或将单个变更集链接到任务,您将始终可以立即获得来自问题跟踪程序的相关信息。
我们之所以创建了一种开发自定义“扩展”的方法,是因为与市场上存在的所有 ALM、问题跟踪程序和构建系统进行集成将是一项不可能完成的任务。我们设计了一种通用的问题跟踪程序连接接口,因此您可以为 Plastic SCM 编写您自己的自定义扩展!
为了编写您自己的 Plastic SCM 自定义扩展,您需要在您的机器上安装 Visual Studio 和我们的 Plastic SCM 客户端。您只需要一个库来构建问题跟踪程序扩展:issuetrackerinterface.dll
。如果您希望添加日志记录功能,您可以利用 Plastic SCM 使用的 log4net.dll
。
要创建新扩展,必须首先在 Visual Studio 中创建一个 Class Library
项目,并添加 issuetrackerinterface.dll
引用(如果愿意,还包括 log4net.dll
)。
除了 Visual Studio 中的 Class Library
项目外,您还需要实现两个不同的接口:
IPlasticIssueTrackerExtension
:定义 Plastic SCM 的所有问题跟踪程序连接功能。IPlasticIssueTrackerExtensionFactory
:管理问题跟踪程序扩展配置和创建。
设置好 Class Library
和文件后,现在就可以开始使用 Plastic SCM。首先,添加一个名为 SampleExtension
的新类。此外,更改命名空间以将您的类放置到 Codice.Client.IssueTracker.SampleExtension
中:
namespace Codice.Client.IssueTracker.SampleExtension { public class SampleExtension : IPlasticIssueTrackerExtension { } }
首先,我们需要存储扩展配置。我们将通过类构造函数来做到这一点。我们将它的可见性设置为 internal
,因为只有它的工厂需要知道如何创建这种对象。
public class SampleExtension : IPlasticIssueTrackerExtension { IssueTrackerConfiguration mConfig; // If you want logging, this is the way to declare it // Don't forget to set log4net.dll as a reference! static readonly ILog mLog = LogManager.GetLogger("sampleextension"); Internal SampleExtension(IssueTrackerConfiguration config) { mConfig = config; mLog.Info("Sample issue tracker is initialized"); } }
我们已经定义了如何创建问题跟踪程序扩展类,接下来我们可以构建它的工厂。为此,请添加一个新的 SampleExtensionFactory
类以实现 IPlasticIssueTrackerExtension
接口。您可能希望使用 Visual Studio 重构选项添加所有需要的方法;只需右键单击接口引用并选择“重构”>“实现接口”。此操作将为每个接口方法添加一个存根。开头如下所示:
namespace Codice.Client.IssueTracker.SampleExtension { public class SampleExtensionFactory : IPlasticIssueTrackerExtensionFactory { public IssueTrackerConfiguration GetConfiguration( IssueTrackerConfiguration storedConfiguration) { throw new NotImplementedException(); } public IPlasticIssueTrackerExtension GetIssueTrackerExtension( IssueTrackerConfiguration configuration) { throw new NotImplementedException(); } public string GetIssueTrackerName() { throw new NotImplementedException(); } } }
最后两个方法很容易实现:
public IPlasticIssueTrackerExtension GetIssueTrackerExtension( IssueTrackerConfiguration configuration) { return new SampleExtension(configuration); } public string GetIssueTrackerName() { return "Sample Issue Tracker"; }
它们分别根据有效的配置和问题跟踪程序名称返回一个有效的问题跟踪程序扩展。然而,第一个有点复杂:它接收一个问题跟踪程序配置,并返回一个有效的配置。然后,我们需要定义我们需要的参数以及参数的默认值。
IssueTrackerConfiguration
类非常简单:它存储一个枚举 ExtensionWorkingMode
字段和一个 IssueTrackerConfigurationParameter
列表。
工作模式接受两个值:
配置参数将列在 Plastic SCM 首选项对话框的问题跟踪程序选项卡中。请参阅下面的配置扩展一节以了解更多信息。
我们将只定义两个参数:当前用户 ID 和 Plastic SCM 分支前缀。第一个参数将影响当前待定的任务结果,而第二个参数将告诉 Plastic 在猜测某个分支是否链接到问题跟踪程序任务时应该具有什么分支名称前缀。
基本上,每个参数包含 4 个属性:name
、value
、type
和 IsGlobal
。前两个顾名思义,就是两个字符串类属性。参数类型由枚举类型 IssueTrackerConfigurationParameterType
进行定义。此属性描述参数包含的内容:
除了 Host、User 和 Password,可以定义任意数量的相同类型的参数。当扩展模式切换到 TaskOnChangeset 时,配置面板将禁用所有 BranchPrefix 条目。
最后,我们的 GetConfiguration
方法将如下所示:
public IssueTrackerConfiguration GetConfiguration( IssueTrackerConfiguration storedConfiguration) { List<IssueTrackerConfigurationParameter> parameters = new List<IssueTrackerConfigurationParameter>(); ExtensionWorkingMode workingMode = GetWorkingMode(storedConfiguration); string user = GetValidParameterValue( storedConfiguration, SampleExtension.USER_KEY, "1"); string prefix = GetValidParameterValue( storedConfiguration, SampleExtension.BRANCH_PREFIX_KEY, "sample"); IssueTrackerConfigurationParameter userIdParam = new IssueTrackerConfigurationParameter() { Name = SampleExtension.USER_KEY, Value = GetValidParameterValue( storedConfiguration, SampleExtension.USER_KEY, "1"), Type = IssueTrackerConfigurationParameterType.User, IsGlobal = false }; IssueTrackerConfigurationParameter branchPrefixParam = new IssueTrackerConfigurationParameter() { Name = SampleExtension.BRANCH_PREFIX_KEY, Value = GetValidParameterValue( storedConfiguration, SampleExtension.BRANCH_PREFIX_KEY, "scm"), Type = IssueTrackerConfigurationParameterType.BranchPrefix, IsGlobal = true }; parameters.Add(userIdParam); parameters.Add(branchPrefixParam); return new IssueTrackerConfiguration(workingMode, parameters); } ExtensionWorkingMode GetWorkingMode(IssueTrackerConfiguration config) { if (config == null) return ExtensionWorkingMode.TaskOnBranch; if (config.WorkingMode == ExtensionWorkingMode.None) return ExtensionWorkingMode.TaskOnBranch; return config.WorkingMode; } string GetValidParameterValue( IssueTrackerConfiguration config, string paramName, string defaultValue) { string configValue = (config != null) ? config.GetValue(paramName) : null; if (string.IsNullOrEmpty(configValue)) return defaultValue; return configValue; }
我们已经完成了我们的工厂!让我们回到 Extension
类。
下一步是实现所有接口方法。使用 Visual Studio 重构来添加所有接口方法:
public class SampleExtension : IPlasticIssueTrackerExtension { public void Connect() { throw new NotImplementedException(); } public void Disconnect() { throw new NotImplementedException(); } public string GetExtensionName() { throw new NotImplementedException(); } public List<PlasticTask> GetPendingTasks(string assignee) { throw new NotImplementedException(); } public List<PlasticTask> GetPendingTasks() { throw new NotImplementedException(); } public PlasticTask GetTaskForBranch(string fullBranchName) { throw new NotImplementedException(); } public Dictionary<string, PlasticTask> GetTasksForBranches(List<string> fullBranchNames) { throw new NotImplementedException(); } public List<PlasticTask> LoadTasks(List<string> taskIds) { throw new NotImplementedException(); } public void LogCheckinResult(PlasticChangeset changeset, List<PlasticTask> tasks) { throw new NotImplementedException(); } public void MarkTaskAsOpen(string taskId, string assignee) { throw new NotImplementedException(); } public void OpenTaskExternally(string taskId) { throw new NotImplementedException(); } public bool TestConnection(IssueTrackerConfiguration configuration) { throw new NotImplementedException(); } public void UpdateLinkedTasksToChangeset(PlasticChangeset changeset, List<string> tasks) { throw new NotImplementedException(); } }
当然,您不需要实现所有方法。如果您不需要或不想提供某些功能,只需将方法主体留空或返回默认值即可。如果返回类型是集合类型,我们建议返回空集合而不是 null 对象。
每个方法的简要说明如下:
Connect
Disconnect
Connect
相反,它将包含释放连接到目标问题跟踪程序(会话等)所需的任何资源的代码。GetExtensionName
GetPendingTasks
GetTaskForBranch
GetTasksForBranches
LoadTasks
LogCheckinResult
MarkTaskAsOpen
OpenTaskExternally
TestConnection
UpdateLinkedTasksToChangeset
为了说明其中一些方法,我们将看到一些示例实现。任务内容将从 https://jsonplaceholder.typicode.com 上的示例 lorem ipsum Web 服务中检索。
好吧,这个真的很傻。我们只需要返回名称 we Plastic 以显示在其视图中。
public string GetExtensionName() { return "My awesome extension"; }
当问题跟踪程序扩展配置为在 TaskOnBranch 模式下工作时,分支资源管理器使用此方法将绘制的分支映射到它们的关联任务。由于我们喜欢整洁的代码,我们已将此功能分解为多个方法以确保其易读性!
public Dictionary<string, PlasticTask> GetTasksForBranches( List<string> fullBranchNames) { Dictionary<string, PlasticTask> result = new Dictionary<string, PlasticTask>(); foreach(string fullBranchName in fullBranchNames) { string taskId = GetTaskIdFromBranchName( GetBranchName(fullBranchName)); result.Add(fullBranchName, LoadSingleTask(taskId)); } return result; } string GetBranchName(string fullBranchName) { int lastSeparatorIndex = fullBranchName.LastIndexOf('/'); if (lastSeparatorIndex < 0 ) return fullBranchName; if (lastSeparatorIndex == fullBranchName.Length - 1) return string.Empty; return fullBranchName.Substring(lastSeparatorIndex + 1); } string GetTaskIdFromBranchName(string branchName) { string prefix = mConfig.GetValue(BRANCH_PREFIX_KEY); if (string.IsNullOrEmpty(prefix)) return branchName; if (!branchName.StartsWith(branchName) || branchName == prefix) return string.Empty; return branchName.Substring(prefix.Length); } const string POST_URL = "https://jsonplaceholder.typicode.com/posts/{0}"; PlasticTask LoadSingleTask(string taskId) { if (string.IsNullOrEmpty(taskId)) return null; string uri = string.Format(POST_URL, taskId); string resultJson = PerformJsonRequest(uri); return BuildTaskFromJson( JsonConvert.DeserializeObject<MyServiceData>(resultJson)); } string PerformJsonRequest(string targetUri) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(targetUri); try { using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) using (StreamReader reader = new StreamReader(resp.GetResponseStream())) { return reader.ReadToEnd(); } } catch(Exception e) { mLog.ErrorFormat( "Unable to perform request on URI {0}: {1}", targetUri, e.Message); mLog.DebugFormat( "Stack trace:{0}{1}", Environment.NewLine, e.StackTrace); return string.Empty; } } PlasticTask BuildTaskFromJson(MyServiceData jsonData) { if (jsonData == null) return null; return new PlasticTask() { Id = jsonData.Id.ToString(), Owner = jsonData.UserId.ToString(), Title = jsonData.Title, Description = jsonData.Body, Status = "working" }; }
您会注意到此方法接收完整分支名称的列表(即名称包含它们的整个层次结构)。对于每一个分支名称,此方法会提取任务 ID 并向 jsonplaceholder
服务执行查询。
JsonPlaceholder
是等效于 REST
服务的“lorem ipsum”生成器。您可以传递一个数值,它会返回一个带有一些示例字段的 JSON 对象。查询不带数字的 URL 将返回一个对象列表。您可以在 https://jsonplaceholder.typicode.com 中找到更多详细信息。
收到 JSON 响应后,您可以使用自己喜欢的 JSON 解析器将响应内容反序列化为有效的对象实例。在前面的示例中,我们使用了 Newtonsoft.Json
。
最后一步是构建一个 PlasticTask
实例,并使用 REST
服务返回的值来设置该实例的字段。处理完每个分支名称后,该方法会将映射作为一个 Dictionary<string, PlasticTask>
类返回。
在需要访问原始信息源时将使用 OpenTask
方法。例如,您有一个网站或第三方应用程序可能包含您需要的信息;在这些情况下,Plastic 问题跟踪程序扩展可以使用 OpenTask
方法为您显示这些数据。
public void OpenTaskExternally(string taskId) { Process.Start(string.Format( "https://www.google.es/search?q={0}", taskId)); }
我们的示例实现非常简单:我们构建一个 URI 在 Google 上搜索任务编号,并使用 System.Diagnostics.Process
类在默认浏览器中打开任务。
当您需要在 Plastic SCM 和问题跟踪程序之间建立紧密集成时,OpenTask
方法非常有用。
参考先前的 GetTasksForBranches 代码示例,当您在 Plastic SCM 分支视图中选择以 sample 前缀开头的分支时,您将在右侧面板上看到详细信息:
可以看到,右侧面板显示了通过 GetTasksForBranches
方法检索到的 PlasticTask
属性信息。
如果您将扩展配置为使用 TaskOnChangeset 工作模式,那么您将在右侧面板上看到三个按钮:
此对话框中的打开问题按钮与我们先前讨论过的按钮相同。您可以将任意数量的问题链接到给定的变更集:
TaskOnBranch 模式是一种使用分支名称和前缀来自动将问题链接到分支的自动机制,而 TaskOnChangeset 模式允许我们手动将问题信息关联到各个变更集。除了我们刚刚看到的变更集视图上的操作按钮之外,您还可以在签入时使用签入信息对话框添加此类链接:
我们关于问题跟踪程序的最新重要功能是从给定问题创建新分支。每当正确配置问题跟踪程序扩展后,创建分支对话框就将自动显示一组新控件,称为从任务模式。
主要控件是一个待定任务列表,其中填充了 GetPendingTasks
方法返回的结果。默认情况下,仅显示分配给当前用户的那些任务(在配置面板中设置)。选中显示所有用户的待定任务控件将如复选框标题所述覆盖此约束。分支名称和注释将自动设置,但稍后可以修改。
最后,选中在问题跟踪程序中标记为未完成将在成功创建分支后执行 MarkTaskAsOpen
方法。它应该会将所选问题的状态设置为打开、正在进行或当前问题跟踪程序的等效状态。
每次编写类库时,都会出现一个问题:轻松调试代码的最佳方法是什么?关于 Plastic SCM 扩展,解决方案很明确:只需在构建部分中修改类库属性,将 .dll
和 .pdb
输出文件直接部署到 Plastic SCM 客户端目录中:
设置输出路径后,还可以配置 Visual Studio 以启动 Plastic SCM 客户端,并自动将调试器附加到生成的 plastic.exe 进程。这样,当 Plastic 与您的自定义扩展代码交互时,将自动触发您设置的断点。
Program Files
下)。
为了让 Plastic 能够看到您的自定义扩展,我们需要编辑 Plastic SCM 客户端文件夹中的 customextensions.conf
文件。
# Each line defines a Plastic SCM extension with a name and a relative dll # path from client installation directory # i.e: # My Custom Extension=extensions/mycustomextension/mycustomextension.dll Sample Extension=SampleExtension.dll
在此配置步骤之后,可以打开首选项对话框并打开问题跟踪选项卡。我们会在此处的下拉列表中找到我们的扩展。进行选择后,主面板将显示配置扩展所需的控件:
通过单击应用或确定按钮,Plastic 将能够与我们全新的扩展配合使用。
使用自定义问题跟踪程序扩展,您可以将任何问题跟踪程序与 Plastic SCM 集成。企业内部网、内部开发的问题跟踪系统等等,可能性无穷无尽。
通过该扩展,您可以开发您自己的代码以连接您自己的系统,还可以方便地将您的系统与 Plastic SCM 客户端进行集成;所有这些可能性为您提供了一个使用 Plastic SCM 以自定义 SCM 体验的绝佳机会。
如果您喜欢所看到的内容并且希望拥有此示例扩展的完整源代码,您可以查看我们的 GitHub 存储库。
Use LDAP credentials if available
、Use default proxy credentials
和 Issue types
。Pending status list
- 现在可以配置被视为“待定”的 Axosoft 状态列表。Default Repository
参数以获得对 Polarion 多个存储库的支持。Custom Field ID
是可选参数。Issue query limit
- 现在可以在“创建分支”对话框中配置返回结果的最大数量。Resolved issue states
- 现在可以定义被视为“已解决”的状态名称列表。