As part of our platform consolidation, this content will be moving to Unity.com by March 31st, 2025.
Preview the new location and updated resources here.
本指南說明 Plastic SCM 如何提供與各種控制追蹤工具的整合:Bugzilla、Mantis、Trac、Jira、Axosoft、VersionOne、FogBugz、Rally、Polarion 和 codeBeamer。
透過本指南,您也會瞭解如何撰寫自己的 Plastic SCM 自訂擴充功能。
議題追蹤系統設定完成後,使用者將能順暢地使用此擴充功能和 Plastic SCM。這表示使用者將能透過 Plastic GUI 查看相關聯的任務資訊。
Plastic SCM 擴充功能允許兩種不同的工作模式:
本節說明搭配使用 Bugzilla 整合與 Plastic SCM 時所需遵循的步驟。
在本章中,您將瞭解如何在伺服器和用戶端中設定 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_por/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 的右側面板。藉由選取分支,Bugzilla 任務資訊就會顯示在 Plastic SCM 中:編號或識別碼、任務擁有者、狀態、標題和描述。

只要按兩下任務窗格或按一下 [在瀏覽器中開啟議題] 按鈕 (
),新瀏覽器視窗將隨即開啟,且將在 Bugzilla 中顯示任務的完整資訊:

您可以設定 Plastic SCM 儲存庫,以便針對 Bugzilla 檢查與任務相關聯的編號分支。只有在 Bugzilla 中有已定義的錯誤編號的情況下,才會允許工作分支。系統會針對分支建立作業執行此檢查 (僅限下層分支)。
為了設定儲存庫上的分支建立檢查,請在所需的儲存庫上建立名為 plastic-enforce-task-branch 的屬性。此屬性必須透過下列其中一種方法建立:

建立此屬性後,每次要在定義的儲存庫上建立下層分支時,擴充功能就會檢查新分支的名稱。如果名稱開頭為任務前置詞,則會挑選其中包含的編號,並詢問 Bugzilla 是否有相符的錯誤編號。否則,就會列印錯誤並取消作業:

若要將 Plastic SCM 設定為以 [變更集上的任務] 工作模式運作,使用者必須設定 Bugzilla 擴充功能,並選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端一節所述。
此工作流程將類似下列內容:
變更集一旦連結至 Bugzilla 中的任務,此資訊就可以顯示在 Plastic SCM [變更集] 檢視中。當 [擴充資訊] 面板為可見狀態時 (
),如果按一下變更集,Plastic 就會顯示相關聯的 Bugzilla 任務:
![變更集檢視在 [變更集上的任務] 模式下運作時提供詳細資訊 變更集檢視在 [變更集上的任務] 模式下運作時提供詳細資訊](chapter2/img/changesets.png)
使用者也可以從 [Bugzilla 擴充功能] 窗格中新增任務或刪除先前的任務。此外,只要按兩下與特定變更集相關聯的每個任務,或按一下 [在瀏覽器中開啟議題] 按鈕 (
),新的網頁瀏覽器視窗就會開啟,並顯示選取的 Bugzilla 任務。每當使用者在 Bugzilla 中修改任務,只要按下 [Bugzilla 擴充功能] 窗格上的 [重新整理] 按鈕,就會在 Plastic GUI 上更新資料。
本節說明搭配使用 Mantis 整合與 Plastic SCM 時所需遵循的步驟,也會說明其優點。
此擴充功能與 Mantis 版本 0.19.4、1.0.0、1.0.8 和更新版本相容。
閱讀有關如何在伺服器和用戶端設定 Mantis 整合的詳細資訊。
若要設定 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_por/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 會從 [新增] 變更為 [已指派]。

下一個步驟是,指派給該任務的開發者必須建立新分支。方法很簡單,只要在上層分支按一下右鍵並選取 [建立下層分支] 選項即可,如下圖所示:

為了將新分支連結至 Mantis 中的議題,開發者必須將相同的 Mantis 編號 (在此案例為 4) 提供給分支,並在前面加上分支前置詞:

現在,使用者可以在 [分支] 檢視的擴充資訊面板 (
) 上檢查連結至特定分支的議題資訊。
![以 [分支上的任務] 模式運作時的分支的 Plastic SCM 擴充資訊 以 [分支上的任務] 模式運作時的分支的 Plastic SCM 擴充資訊](chapter3/img/branches.png)
如果使用者按一下 [在瀏覽器中開啟議題] 按鈕 (
) 或按兩下 Mantis 任務,含有相關聯分支議題的瀏覽器視窗將會開啟。當使用者變更議題的狀態或其他任何欄位時,只要重新整理 Mantis 擴充功能,就會顯示新資訊。
若要將 Plastic SCM 設定為以 [變更集上的任務] 工作模式運作,使用者必須設定 Mantis 擴充功能,並選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端一節所述。
此工作流程將類似下列內容:
變更集一旦連結至 Mantis 中的議題或任務,此資訊就可以顯示在 Plastic SCM [變更集] 檢視中。當 [擴充資訊] 面板為可見狀態時 (
),如果按一下變更集,Plastic 就會顯示相關聯的 Mantis 任務:
![[變更集上的任務] 工作模式中的變更集擴充資訊 [變更集上的任務] 工作模式中的變更集擴充資訊](chapter3/img/changeset.png)
使用者也可以從 [Mantis 擴充功能] 窗格中新增任務或刪除先前的任務。此外,只要按兩下與特定變更集相關聯的每個任務,或按一下 [在瀏覽器中開啟議題] 按鈕 (
),新的網頁瀏覽器視窗就會開啟,並顯示選取的 Mantis 任務。每當使用者在 Mantis 中修改任務,只要按下 [Mantis 擴充功能] 窗格上的 [重新整理] 按鈕,就會在 Plastic GUI 上更新資料。
本節說明搭配使用 Trac 整合與 Plastic SCM 時所需遵循的步驟。也會說明其優點。
此擴充功能與 Trac 0.10 以上的版本相容。
在本章中,您將瞭解如何在伺服器和用戶端中設定 Trac 整合。
若要設定 Trac 擴充功能,必須將 XMLRPC 外掛程式安裝至 Trac 伺服器中。此連結提供有關如何下載、安裝和驗證已正確設定的資訊。
使用 Trac 管理工具,啟用將使用擴充功能的使用者的 XML_RPC 權限。如果此權限已指派給「匿名」使用者,則表示可供所有使用者使用。

使用 Trac 擴充功能時,必須將多項伺服器設定功能納入考量:
閱讀有關如何在 Windows、Linux 或 macOS 系統上設定 Trac 整合的詳細資訊。
請按照下列步驟,在您 Windows 機器的 Plastic SCM 用戶端上設定 Trac 擴充功能:
plastic-global-config 儲存庫。
Repositories。
您可以使用下列其中一種方法,在 Linux 或 macOS 機器的 Plastic SCM 用戶端上設定 Trac 擴充功能:
$HOME/.plastic4 底下建立結構 issuetrackers/server_por/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。

只要按一下 [顯示擴充資訊] 按鈕 (
),就會顯示分支的擴充資訊。若已選取 [分支] 檢視上的分支,右側窗格會顯示相關聯任務/缺陷的資訊:其編號、已獲派任務的擁有者或開發者、狀態、標題和註解。
![以 [分支上的任務] 模式運作時的分支的 Plastic SCM 擴充資訊 以 [分支上的任務] 模式運作時的分支的 Plastic SCM 擴充資訊](chapter4/img/branches.png)
只要按兩下 Trac 資訊任務或按下 [在瀏覽器中開啟議題] 按鈕 (
),顯示相關聯分支任務的新瀏覽器視窗就會開啟,而且會顯示 Trac 任務的完整資訊。
若要將 Plastic SCM 設定為使用 [變更集上的任務] 工作模式,使用者必須設定 Trac 擴充功能,並選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端一節所述。
此工作流程將類似下列內容:
變更集一旦連結至 Trac 中的票證或任務,此資訊就可以顯示在 Plastic SCM [變更集] 檢視中。當 [擴充資訊] 面板為可見狀態時 (
),如果按一下變更集,Plastic 就會顯示相關聯的 Trac 任務:
![變更集檢視在 [變更集上的任務] 模式下提供詳細資訊 變更集檢視在 [變更集上的任務] 模式下提供詳細資訊](chapter4/img/changeset.png)
使用者也可以從 [Trac 擴充功能] 窗格中新增任務或刪除先前的任務。此外,只要按兩下與特定變更集相關聯的每個任務,或按一下 [在瀏覽器中開啟議題] 按鈕 (
),新的網頁瀏覽器視窗就會開啟,並顯示選取的 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_por/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。
新一代專案不支援此欄位。
將 Custom Field ID 留白,以讓簽入資訊新增為註解。
Use LDAP credentials if available:如果 Plastic SCM 用戶端驗證模式為 LDAP,則可將 Jira 擴充功能設定為透過檢查此參數以重複使用這些認證來登入 Jira。請記住,Plastic SCM 伺服器和 Jira 兩者必須共用同一個 LDAP 使用者目錄,此功能才能正常運作。
Use default proxy credentials:使用所有 Jira 擴充功能連線的預設認證,以自動設定 Proxy 認證。
Issue query limit:此參數可用來手動調整 [建立分支] 對話方塊中的傳回結果數上限。Resolved issue states:保留視為 [已解決] 之狀態名稱的逗號分隔清單。Issue types:可讓您篩選 Jira 擴充功能依其類型擷取的議題。只要輸入以逗號分隔的議題類型清單即可。這是很實用的功能,舉例來說,如果您只想要在 Plastic SCM 中查看「錯誤」或「任務」議題,便可以篩選掉其餘的類型。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 議題:
![變更集檢視在 [變更集上的任務] 工作模式下提供詳細資訊 變更集檢視在 [變更集上的任務] 工作模式下提供詳細資訊](chapter5/img/changeset.png)
使用者也可以從 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 (表單產生器),則為 JIRA_FG-1。

Jira 擴充功能允許從 Jira 議題對應欄位,這將顯示於 Plastic SCM 中 [分支] 或 [變更集] 檢視的任務資訊面板上。
若要定義 Jira 欄位對應功能,則必須設定參數 [欄位對應]。若要這樣做,請按一下 Plastic SCM GUI 主視窗的 [偏好設定] 索引標籤,以開啟 Jira 擴充功能設定。然後,按下 [議題追蹤] 索引標籤。向下捲動參數清單,直到 [欄位對應] 設定參數出現為止:

它會儲存欄位名稱組 (從 -> 至),並以「|」 (分隔號) 字元分隔。參數語法為:
[ 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 議題描述。
「從 -> 至」組中的 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] (含括號),議題狀態將變更為 [可開始 QA]。
此功能可用於將議題繫結至分支和變更集。
請注意,您的 Jira 工作流程必須允許在不同的狀態之間進行轉換。
這不需要設定 Plastic SCM 自訂欄位 ID 即可使用。
閱讀有關如何在 Windows、Linux 或 macOS 系統上設定狀態轉換功能的詳細資訊。
jira.conf 檔案。
Value 參數中的文字:
Name=Status transitions;Value=[FIXED]-Ready for QA|[WONTFIX]-Done;Type=Text;IsGlobal=True
若要使用 Plastic SCM Axosoft 整合,請按照本節的步驟進行。
此擴充功能與 Axosoft v14 和更新版本相容。
在本章中,您將瞭解如何在伺服器和用戶端中設定 Axosoft 整合。
若要設定 Axosoft 擴充功能,您必須將 Axosoft 伺服器基底 URL 提供給 Plastic SCM。
Plastic SCM 用戶端在設定 Axosoft 整合時所需的其他兩個設定參數為 client-id 和 client-secret 參數。若要取得這些值,請先移至 [工具] 功能表底下的 [系統選項] 選項:

在 [系統設定] 視窗中,按一下 [Axosoft API 設定] 索引標籤。在此檢視底下,勾選 [啟用 API] 核取方塊,然後按一下 [管理 API 金鑰] 按鈕。

在新視窗中,按一下 [新增] 按鈕以取得兩個值,這些值將用來識別並驗證 Plastic SCM 與 Axosoft 的整合。輸入 [應用程式名稱],複製 [用戶端 ID] 和 [用戶端秘密金鑰] 值,然後按一下 [儲存] 按鈕:

儲存 API 金鑰後,應建立自訂欄位以允許 Plastic SCM 記錄在與 Axosoft 議題相關的每個簽入作業中所做的所有變更。
若要允許此作業,必須在 Axosoft 中建立新的自訂欄位。若要這樣做,請移至 [工具] 功能表,然後選取 [欄位] 子功能表底下的 [自訂欄位] 選項:

在新視窗的 [錯誤] 索引標籤底下,按一下 [新增] 按鈕,然後輸入 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_por/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 擴充功能,則必須在議題追蹤系統上建立缺陷。若要這樣做,請按一下 [新增] 功能表,然後選取 [完整新增] 選項,如下圖所示:

在 [新增錯誤] 視窗上,必須填寫新任務名稱、優先順序、狀態、指派的工程師等資訊。儲存新缺陷後,Axosoft 會提供此新缺陷一個識別碼,以便讓指派的開發者在建立 Plastic SCM 分支時使用該識別碼來處理該任務。

然後,已指派給該議題的開發者會開始處理該議題,透過 Plastic SCM GUI 用戶端建立新分支。請注意,新分支的名稱必須符合 Plastic SCM Axosoft 擴充功能的已設定分支前置詞 (若已定義),後面加上 Axosoft 指派的議題編號,才能進行連結。
按一下 [分支] 檢視上的 [顯示擴充資訊] 按鈕 (
),與分支相關聯的資訊就會顯示在 GUI 的右側,如下列螢幕擷取畫面所示。選取分支時,將會顯示 Axosoft 缺陷的詳細資訊:名稱、擁有者、狀態、標題和描述。
![[分支上的任務] 模式中的分支詳細資訊 [分支上的任務] 模式中的分支詳細資訊](chapter6/img/branch.png)
藉由按兩下或按下 [在瀏覽器中開啟議題] 按鈕 (
),會開啟具有相關聯分支任務的新網頁瀏覽器視窗,並且會顯示 Axosoft 任務的完整資訊。當使用者變更議題的狀態或其他任何欄位時,按一下 Axosoft 擴充功能的 [重新整理] 按鈕就會顯示新資訊。
若要將 Plastic SCM 設定為以 [變更集上的任務] 工作模式運作,使用者必須設定 Axosoft 擴充功能,並選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端一節所述。
此工作流程將類似下列內容:
變更集一旦連結至 Axosoft 缺陷或任務,擴充功能資訊 (
) 就會顯示在 [變更集] 檢視上。使用者也可以透過 Axosoft 擴充功能窗格新增任務或刪除先前任務,而且只要按兩下每個議題或按一下 [在瀏覽器中開啟議題] 按鈕 (
),具有相關聯 Axosoft 議題的網頁瀏覽器視窗就會開啟。每當使用者在任務追蹤工具中修改議題,只要按下 [Axosoft 擴充功能] 窗格上的 [重新整理] 按鈕,就會在 Plastic GUI 上更新資料。
![[變更集上的任務] 工作模式中的變更集詳細檢視 [變更集上的任務] 工作模式中的變更集詳細檢視](chapter6/img/changeset.png)
除了顯示與 Plastic SCM 整合之分支和變更集相關聯議題的相關資訊,此擴充功能還會每次完成相關聯議題簽入時在 Axosoft 中記錄。
這樣使用者就可以查看每個簽入作業在 Axosoft 任務上註冊的情況:

本節說明搭配使用 VersionOne 整合與 Plastic SCM 時所需遵循的步驟。
此擴充功能與 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_por/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 擴充功能資訊:任務編號、擁有者、狀態等。
![[分支上的任務] 模式中的詳細分支資訊 [分支上的任務] 模式中的詳細分支資訊](chapter7/img/detailed.png)
在與分支相關聯的任務上按兩下,或按一下 [在瀏覽器中開啟議題] 按鈕 (
),新的網頁瀏覽器視窗就會開啟。當使用者變更議題的狀態或其他任何欄位時,可藉由重新整理 VersionOne 擴充功能來顯示新資訊。
若要將 Plastic SCM 設定為以 [變更集上的任務] 工作模式運作,使用者必須設定 VersionOne 擴充功能,並選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端一節所述。
此工作流程將類似下列內容:
變更集一旦連結至 VersionOne 任務,擴充功能資訊 (
) 會顯示在 [變更集] 檢視上。使用者也可以從 VersionOne 擴充功能資訊新增任務或刪除先前的任務。此外,藉由按兩下與特定變更集相關聯的每個議題,或按一下 [在瀏覽器中開啟議題] 按鈕 (
),具有 VersionOne 的瀏覽器就會開啟。每當使用者重新整理 VersionOne 擴充功能資訊以在 VersionOne 中修改議題,該議題就會顯示在 Plastic SCM 中。
![變更集檢視在 [變更集上的任務] 模式下提供詳細資訊 變更集檢視在 [變更集上的任務] 模式下提供詳細資訊](chapter7/img/changeset.png)
本節說明搭配使用 FogBugz 整合與 Plastic SCM 時所需遵循的步驟。
此擴充功能與 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_por/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 擴充功能資訊:任務編號、擁有者等。
![分支檢視以 [分支上的任務] 模式中顯示擴充資訊 分支檢視以 [分支上的任務] 模式中顯示擴充資訊](chapter8/img/branch.png)
藉由按兩下或按一下 [在瀏覽器中開啟議題] 按鈕 (
),新的網頁瀏覽器視窗就會開啟。它會顯示 FogBugz 任務的完整資訊。當使用者變更議題的狀態或其他任何欄位時,只要按一下 FogBugz 擴充功能的 [重新整理] 按鈕,就會顯示新資訊。
若要將 Plastic SCM 設定為以 [變更集上的任務] 工作模式運作,使用者必須設定 FogBugz 擴充功能,並選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端一節所述。
此工作流程將類似下列內容:
一旦變更集已連結至 FogBugz 中的議題或任務,擴充功能資訊 (
) 就會顯示在 [變更集] 檢視畫面上。使用者也可以從 FogBugz 擴充功能資訊中新增任務或刪除先前的任務。此外,藉由按兩下與特定變更集相關聯的每個議題,或按一下 [在瀏覽器中開啟議題] 按鈕 (
),具有 FogBugz 的瀏覽器將會開啟。每當使用者透過重新整理 FogBugz 擴充功能資訊以在 FogBugz 中修改議題時,該議題就會顯示在 Plastic 中。
![變更集檢視以 [變更集上的任務] 模式顯示詳細資訊 變更集檢視以 [變更集上的任務] 模式顯示詳細資訊](chapter8/img/changeset.png)
除了顯示與 Plastic SCM 整合之分支和變更集相關聯議題的相關資訊,此擴充功能還會在每次完成相關聯議題簽入時在 FogBugz 中記錄,前提是已勾選 [用戶端] 區段上的 [啟用簽入記錄] 核取方塊。
這樣使用者就能透過按選 [簽入 - 按一下以列出] 連結,查看每個簽入作業在 FogBugz 任務上註冊的情況:

本節說明使用 Plastic SCM Rally 軟體開發整合時所需遵循的步驟。
在本章中,您將瞭解如何在伺服器和用戶端中設定 Rally 整合。
需要具備有效的 Rally 帳戶,才能設定 Rally 擴充功能。不需要在伺服器端或本機設定中執行任何操作,因為 Rally 是 Web 服務,對 Rally 的所有變更都是透過網際網路完成。
閱讀有關如何在 Windows、Linux 或 macOS 系統上設定 Rally 整合的詳細資訊。
請按照下列步驟,在您 Windows 機器的 Plastic SCM 用戶端上設定 Rally 擴充功能:
plastic-global-config 儲存庫。
Repositories。
您可以使用下列其中一種方法,在 Linux 或 macOS 機器的 Plastic SCM 用戶端上設定 Rally 擴充功能:
$HOME/.plastic4 底下建立結構 issuetrackers/server_por/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 物件的詳細資訊:
![分支檢視以 [分支上的任務] 工作模式顯示詳細資訊 分支檢視以 [分支上的任務] 工作模式顯示詳細資訊](chapter9/img/branch.png)
藉由按兩下或按一下 [在瀏覽器中開啟議題] 按鈕 (
),具有相關聯分支任務的網頁瀏覽器視窗就會開啟。每當使用者完成任務並變更其狀態或其他任何欄位時,使用者只需在 Plastic 分支擴充資訊上重新整理,即可檢視新值。
若要將 Plastic SCM 設定為以 [變更集上的任務] 工作模式運作,使用者必須設定 Rally 擴充功能,並選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端一節所述。
此工作流程將類似下列內容:
一旦變更集已連結至 Rally 物件,將會從 [變更集] 檢視畫面顯示其資訊,而使用者也可以將新連結加入至 Rally 物件,或刪除先前的連結。此外,在每個議題上按兩下,或按一下 [在瀏覽器中開啟議題] 按鈕 (
), Rally 中具有相關聯物件的網頁瀏覽器視窗就會開啟。每當使用者從議題追蹤工具修改缺陷、任務、測試案例或使用者案例,只要按一下 Rally 擴充功能的 [重新整理] 按鈕,就會載入其變更。
![變更集檢視以 [變更集上的任務] 模式顯示擴充資訊 變更集檢視以 [變更集上的任務] 模式顯示擴充資訊](chapter9/img/changeset.png)
本節說明使用 Plastic SCM Polarion 軟體開發整合時所需遵循的步驟。
為了設定 Polarion 擴充功能,已執行某些任務:
client/polarion 資料夾將目錄 com.codicesoftware.platform.repository.external.plasticscm 複製到 [Polarion installation]/polarion/extensions 的 Polarion 擴充功能資料夾。
client 資料夾。在此案例中,有效的 client.conf 必須位於 cm 可執行檔所在位置的這個 client 資料夾中。
閱讀有關如何在 Windows、Linux 或 macOS 系統上設定 Polarion 整合的詳細資訊。
請按照下列步驟,在您 Windows 機器的 Plastic SCM 用戶端上設定 Polarion 擴充功能:
plastic-global-config 儲存庫。
Repositories。
您可以使用下列其中一種方法,在 Linux 或 macOS 機器的 Plastic SCM 用戶端上設定 Polarion 擴充功能:
$HOME/.plastic4 底下建立結構 issuetrackers/server_por/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 的右側面板。藉由選取分支,Polarion 議題資訊就會顯示在 Plastic SCM 中:

藉由按兩下或按下 [在瀏覽器中開啟議題] 按鈕 (
),會開啟顯示相關聯分支議題的新瀏覽器視窗,並且會顯示 Polarion 任務的完整資訊。
如果使用者在 Polarion 中變更工作項目的任何值,那麼只要按一下 [Polarion 擴充功能] 面板的[重新整理] 按鈕,就會在 Plastic 中顯示新資訊。
若要將 Plastic SCM 設定為以 [變更集上的任務] 工作模式運作,使用者必須設定 Polarion 擴充功能,並選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端設定一節所述。
此工作流程將類似下列內容:
在下列範例中,兩個 Polarion 工作項目連結至即將簽入的變更:
![[新增議題] 對話方塊,在執行簽入作業時,為任務與變更集建立關聯 [新增議題] 對話方塊,在執行簽入作業時,為任務與變更集建立關聯](polarion/img/linking-two-work-items.png)
Polarion 擴充功能會檢查要連結的工作項目的狀態。只有已在用戶端設定的 [工作項目狀態] 欄位中定義狀態的 Polarion 工作項目,才能進行連結。如您所見,已設定的工作項目狀態為草稿和開啟。因此,將不允許其他任何狀態:
![在使用 [變更集上的任務] 工作模式時檢查工作項目狀態 在使用 [變更集上的任務] 工作模式時檢查工作項目狀態](polarion/img/checking-work-item-statuses.png)
變更集一旦連結至 Polarion 中的工作項目,此資訊就可以顯示在 Plastic SCM [變更集] 檢視中。當 [擴充資訊] 面板 (
) 為可見狀態時,在變更集中按一下就會顯示相關聯的 Polarion 工作項目。
![變更集檢視在 [變更集上的任務] 工作模式下提供詳細資訊 變更集檢視在 [變更集上的任務] 工作模式下提供詳細資訊](polarion/img/changeset.png)
使用者也可以從 [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 擴充功能設定的伺服器端進行任何變更。
但如果您想要將 Webhook 的秘密權杖新增至 codeBeamer 設定,請按照下列步驟進行:
"scc" 節點不存在於 json (json 根層級) 中,請新增。
"plasticscm" 節點不存在於 "scc" 節點底下的 json 中,請新增。
"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_por/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 任務資訊:
藉由按兩下任務或按下 [在瀏覽器中開啟議題] 按鈕 (
),會開啟新的網頁瀏覽器視窗,顯示相關 codeBeamer 任務的完整資訊。當使用者變更任務的任何欄位時,按一下 codeBeamer 擴充功能面板的 [重新整理] 按鈕就會顯示新資訊。
若要將 Plastic SCM 設定為以 [變更集上的任務] 工作模式運作,使用者必須在設定 codeBeamer 擴充功能時選取 [將議題繫結至 Plastic 變更集] 選項,如先前的用戶端一節所述。
此工作流程將類似下列內容:
變更集一旦連結至 codeBeamer 中的任務,此資訊就可以顯示在 Plastic SCM [變更集] 檢視中。當 [擴充資訊] 面板為可見狀態時 (
),如果按一下變更集,Plastic 就會顯示相關聯的 codeBeamer 任務:
使用者也可以從 [codeBeamer 擴充功能] 窗格新增任務或刪除先前的任務。此外,只要按兩下與特定變更集相關聯的每個任務,或按一下 [在瀏覽器中開啟議題] 按鈕 (
),新的網頁瀏覽器視窗就會開啟,並顯示選取的 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:
Plastic SCM GUI - Windows - 範例 plastic-global-config
Plastic SCM GUI - Linux - 範例 plastic-global-config
Plastic SCM GUI - macOS - 範例 plastic-global-config
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\使用者\AppData\Local\plastic4 底下))。例如:C:\Users\user\AppData\Local\plastic4\issuetrackers\server_port\repname\extension_configuration_file.conf
Plastic SCM 隨附一些現成可用的議題追蹤器整合擴充功能,可用於與最熱門的議題追蹤和專案管理系統連線。
這些「現成可用」的擴充功能可讓 Plastic SCM 顯示連結至分支的任務的相關資訊 (建議使用),或是顯示分支瀏覽器中的變更集、變更集檢視或分支檢視的相關資訊。如此一來,如果在每個任務模式實作分支,或將個別變更集連結至任務,您隨時都能立即從議題追蹤器取得相關資訊。
我們之所以建立開發自訂「擴充功能」方法,是因為要透過市面上現存的所有 ALM、議題追蹤器和建置系統提供整合,幾乎是不可能的任務。我們已設計通用的議題追蹤器連線介面,讓您能夠為 Plastic SCM 撰寫自己的自訂擴充功能!
您需要在機器上安裝 Visual Studio 和 Plastic SCM 用戶端,才能撰寫您自己的 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");
}
}
現在,我們已定義如何建立議題追蹤器擴充功能類別,我們可以建置其處理站。為此,請新增實作 IPlasticIssueTrackerExtension 介面的 SampleExtensionFactory 類別。您可能會想要使用 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。它會描述參數包含的內容:
可定義設定為相同類型的任意數量參數,但主機、使用者和密碼除外。當擴充功能模式切換為 TaskOnChangeset 時,設定面板會停用所有分支前置詞項目。
最後,我們的 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();
}
}
當然,您不需要實作所有方法。如果有某個您不需要或不想提供的功能,只要將方法主體留白或傳回預設值即可。如果傳回類型為集合類型,建議您傳回空白集合,而不是空物件。
這是每個方法的簡短描述:
ConnectDisconnectConnect 相反,該功能會包含程式碼以釋放任何所需的資源來連線至目標議題追蹤器 (工作階段等)。GetExtensionNameGetPendingTasksGetTaskForBranchGetTasksForBranchesLoadTasksLogCheckinResultMarkTaskAsOpenOpenTaskExternallyTestConnectionUpdateLinkedTasksToChangeset為了以圖解方式說明其中一些方法,我們來看看一些實作範例。任務內容將會從 http://jsonplaceholder.typicode.com 的範例 lorem ipsum Web 服務擷取。
這個真的不理想。我們只需傳回名稱 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 = "http://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 會傳回物件清單。您可在 http://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 [分支] 檢視上選取以範例前置詞做為開頭的分支時,您將在右側面板上看到詳細資訊:
![[分支] 檢視 - 擴充功能詳細資料 [分支] 檢視 - 擴充功能詳細資料](chapter11/img/branches_view.png)
如您所見,右側面板會顯示使用 GetTasksForBranches 方法擷取的 PlasticTask 屬性資訊。
如果將擴充功能設定為使用 TaskOnChangeset 工作模式,您會看到右側面板上顯示三個按鈕:
![[變更集] 檢視 - 擴充功能詳細資料 [變更集] 檢視 - 擴充功能詳細資料](chapter11/img/changesets_view.png)
第一個按鈕會在瀏覽器中開啟任務資訊,就像我們在 OpenTask 方法上所看到的一樣。
第二個按鈕會將任務連結至所選的變更集。按一下後,將隨即顯示對話方塊,可供選取要連結的任務。
![[新增議題] 對話方塊 [新增議題] 對話方塊](chapter11/img/add_issue_dialog.png)
此對話方塊上的 [開啟議題] 按鈕相當於我們之前討論的按鈕。您可以視需要將許多議題連結至指定的變更集:

第三個按鈕會移除連結至目前所選變更集的所選議題。
雖然 TaskOnBranch 模式是使用分支名稱和前置詞來將議題自動連結至分支的自動化機制,但 TaskOnChangeset 模式可讓我們手動將議題資訊與個別變更集建立關聯。除了我們剛看到的 [變更集] 檢視上的動作按鈕以外,您還可以在簽入時使用 [簽入資訊] 對話方塊來新增這種類型的連結:
![[簽入資訊] 對話方塊 [簽入資訊] 對話方塊](chapter11/img/checkin_extension_information.png)
有關議題追蹤器的最新關鍵功能是從指定的議題建立新分支。每當正確設定議題追蹤器擴充功能,[建立分支] 對話方塊將自動顯示一組新的控制項 (稱為 [從任務] 模式)。

主要控制項是擱置的任務清單,使用 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 - 您現在可以定義視為「已解決」的狀態名稱清單。