請參閱 Plastic 手冊中的集中式和分散式一章,以瞭解分散式開發的基礎概念。
請使用此最新版指南,瞭解套件複寫與直接複寫的差異、各種不同伺服器之間的驗證、如何使用命令列和 GUI 進行複寫,以及分支瀏覽器如何協助視覺化分散式儲存庫。
有兩種可用的複寫模式:
下圖描述兩種可用的複寫模式。
以套件為基礎的複寫導入了讓伺服器保持同步的功能,但因安全性限制而不允許這些伺服器直接連線。
所有上述複寫案例和可能性都可以透過下列 Plastic SCM 命令進行管理:push 和 pull。
cm pull srcbranch destinationrepos其中,srcbranch 是識別要複寫的分支及其儲存庫的分支規格,而 destinationrepos 是即將複寫分支的儲存庫。
假設您要將伺服器 london:8084 的儲存庫程式碼的 main 分支複寫至 bangalore:7070 的儲存庫 code_clone。命令將是:
cm pull main@code@london:8084 rep:code_clone@bangalore:7070如果您不僅要複寫 main 分支,還要複寫整個儲存庫,此時您便可使用 clone 命令:
cm clone code@london:8084 code_clone@bangalore:7070若要使用套件複寫分支,第一個步驟將為建立複寫套件,然後將套件匯入至另一個伺服器。
假設您必須為伺服器 box:8084 的儲存庫程式碼的 main 分支建立複寫套件。
cm push br:/main@code@box:8084 --package=box.pk上一個命令將會產生名為 box.pk 的套件,並包含 main 分支的所有內容。
之後,該套件將於儲存庫伺服器 berlin:7070 匯入。
cm pull rep:code@berlin:7070 --package=box.pk複寫期間,不同的伺服器必須彼此通訊。這表示執行不同驗證模式的伺服器必須交換資料。
複寫系統要能夠設定不同的驗證選項才能這樣做。
下圖顯示具有一個用戶端和兩個伺服器的一般案例。所有涉及的 Plastic SCM 元件皆已設定為在 LDAP 下運作,它們可共用相同的 LDAP 認證,因此不需要進行轉譯。
請注意,驗證會在兩個層級進行:
如果兩個伺服器沒有使用相同的驗證機制,或未針對相同 LDAP 授權單位進行驗證,步驟 2 將會失敗。
在下圖顯示的案例中,伺服器 london 已設定為使用使用者/密碼驗證。在此案例中,類似此圖頂端指定的命令將會失敗,因為伺服器之間的驗證無法在步驟 2 中運作。
為解決此問題,複寫系統能夠指定要在伺服器之間使用的驗證認證。在此範例中,用戶端可以向伺服器 berlin 指定使用者和密碼,以與伺服器 london 進行溝通。
下圖顯示在來源伺服器使用使用者/密碼時,用來指定驗證認證的兩種不同方式。
第一個選項是實際在命令列指定模式,以及使用者和密碼 (適用於 UP)。
第二個選項會使用驗證檔案,這在驗證認證將重複使用的情況下非常實用。如圖所示,驗證檔案是包含兩行的簡單文字檔案:
client.conf
的 [安全性設定] 區段完全相同的資料。假設現在複寫必須反向進行 (從 berlin 至 london),如下圖所示。系統會指定連線至 LDAP 伺服器 (在此案例中是透過 LDAP 存取的 Active Directory) 的參數。一般而言,在 LDAP 中,驗證檔案將用來簡化程序。
在具有不同安全性模式的伺服器之間執行複寫時,驗證並不是唯一的議題。使用者和群組識別必須在不同的安全性模式之間進行轉譯。
下圖的範例嘗試從使用者/密碼驗證模式複寫至以 LDAP 為基礎的模式。UP 節點的使用者清單會儲存純文字名稱,但 LDAP 伺服器的使用者清單會儲存 SID。當正在複寫的某個修訂的擁有者需要從 repA 複製到 repB 時,將從 repA 的使用者清單中取得使用者或群組,並導入repB 的清單中。如果來自 repA 的名稱直接插入至 repB 的清單中,之後當柏林的伺服器嘗試解析 LDAP 識別碼時,就會發生問題,因為它會找到無效的識別碼:使用者/密碼模式中的使用者識別碼將不符合 LDAP 目錄的識別碼,且已複寫儲存庫中的使用者名稱將出現錯誤。
因此,為了解決此問題,將需要進行轉譯。
Plastic 複寫系統可支援三種不同的轉譯模式:
複寫可以由命令列介面 (CLI) 和 Plastic 圖形化使用者介面 (GUI) 這兩項工具來完成。所有可能的動作都位於分支選項底下的子功能表中,因為複寫主要與分支相關。此主題說明如何從 GUI 執行最常見的複寫動作。
在 GUI 中,複寫和分散式共同作業已整理為下列動作:
下圖描述各種不同的可用作業。透過命令列,所有作業都是從單一命令發出,但 GUI 會區分推送 (將變更從伺服器移至目的地) 與提取 (將變更從遠端儲存庫帶至您的儲存庫) 動作。
每當您要將變更推送至遠端儲存庫時,請在分支功能表上選取 [推送此分支]。推送變更的意思是將所選分支上所做的變更傳送至遠端儲存庫。
將分支推送至不同的儲存庫後,就可以在遠端修改分支。在某個時間點,您會對擷取在遠端對分支所做的變更感興趣。若要這樣做,您必須使用複寫分支功能表中的 [提取此分支] 動作。
下圖描述的對話方塊,與用於推送變更的對話方塊非常類似,但此次您的伺服器位於右側,做為此作業的目的地。
當您從遠端分支提取變更時,如果兩個位置上有彼此衝突的變更集,便有可能建立子分支。
另一個複寫期間的常見案例就是將分支從遠端儲存庫匯入您的儲存庫,以開始進行變更,或從中建立下層分支。
若要執行匯入,請使用 [提取遠端分支] 選項。下圖所示的對話方塊將隨即顯示。請注意,這次您可以選擇來源伺服器、儲存庫、分支,以及您伺服器上的目的地儲存庫。
如驗證一章所述,不同的 Plastic SCM 伺服器可以使用不同的驗證模式。根據預設,當您嘗試連線至遠端伺服器時,將會使用目前的設定檔 (用來連線至伺服器的設定)。不過,有時候預設的設定檔在遠端伺服器上會失去效用。
若要將 Plastic SCM 設定為能夠透過不同的驗證模式與遠端伺服器連線,請使用複寫對話方塊上的 [進階選項] 按鈕。它會提取與下圖類似的對話方塊。
此對話方塊會顯示目前已選取的設定檔 (螢幕擷取畫面上的預設設定檔),以及轉譯模式 (如需詳細資訊,請參閱驗證一章) 和選用的轉譯表格。
您可以有從先前複寫作業所建立的不同驗證設定檔,而且可以按下位於 [遠端伺服器組態設定檔] 編輯方塊右側的 [瀏覽] 按鈕,以列出這些設定檔或建立新的設定檔。
它會顯示與下圖類似的對話方塊,能讓您選取、編輯、建立或移除設定檔。
目前為止,所有步驟均著重於設定複寫的程序。正確設定此作業後,請按下 [複寫] 按鈕,實際上就會進入複寫程序對話方塊,如下圖所述。
複寫作業主要分為三大狀態:
您可以隨時按下 [取消] 按鈕來取消此作業。
複寫作業完成時,摘要隨即顯示,其中包含有關已建立物件數量的詳細資訊。
複寫套件可從您儲存庫上的分支建立,或從可連線之任何伺服器上的任何分支建立。若要從分支檢視中的所選分支建立套件,請按一下 [從此分支建立複寫套件]。
若要從任何遠端分支建立套件,請按一下複寫功能表上的 [建立複寫套件]。
上圖顯示套件建立對話方塊。它會從所選分支產生複寫套件,這會包含來自該分支的所有資料和中繼資料。它可在沒有任何可用直接連線的情況下,用來在伺服器之間進行複寫。
從複寫功能表選取 [匯入複寫套件],然後選取要匯入的套件檔案。對話方塊隨即顯示,如下圖所示。
分支瀏覽器是 Plastic SCM GUI 中的核心功能之一,其在最近發行的版本中已大幅改善,能夠處理分散式案例。這就是它現在可接收分散式分支瀏覽器名稱的原因。簡稱為 DBrEx。
請考慮兩個複寫的 Plastic SCM 伺服器,一個是在中央伺服器執行,另一個是在膝上型電腦執行,如下所示。
在膝上型電腦執行的伺服器已先從中央伺服器複寫 main 分支。之後建立 task002,且開發者在它上面運作。在某個時間點,此案例如下所示:
透過從不同來源收集資料,然後在單一圖表上轉譯變更集和分支,DBrEx 便能夠轉譯分散式圖表,如下圖所示。
DBrEx 將結合不同來源,並使用從不同來源收集的資訊建立互動式圖表。
透過數個選項,可將多個已複寫的儲存庫併入相同的 DBrEx 圖表。第一個選項可用來建立結合的轉譯,包括來自所選複寫來源的所有變更集和分支。下圖示範開始設定圖表的方式。
[複寫來源] 索引標籤顯示已用於從 DBrEx 上轉譯的儲存庫提取變更的儲存庫 (或是將變更推送至作用中的儲存庫)。
一旦按選一或多個複寫來源 (按選 [顯示遠端資料] 核取方塊),分散式圖表將轉譯為下圖所示的結果。它會擴展並包含來自遠端儲存庫的資訊。
如此一來,分散式分支瀏覽器就會採用全新的方式,瞭解專案和分支如何在各個不同的複本中演變。
也可以從 DBrEx 執行複寫作業,因此提取遠端分支已變得非常簡單,只要選取 DBrEx 中轉譯的遠端分支,然後按一下 [提取此分支] 即可。遠端分支和變更集也適用於「差異比對」,這大幅提升了分散式變更的工作體驗。
在 DBrEx 的遠端分支或變更集上按一下右鍵,即可探索和瞭解在遠端修改的內容。如此一來,開發者或整合者就可以更加瞭解,哪些變更會在完成作業前從遠端來源提取。下圖顯示在遠端變更集上啟用的選項。
有時候不需要轉譯整個分散式圖表,因為 SCM 管理員或開發者只需要專注於特定分支。
上圖顯示 [分支瀏覽器]/[顯示目前分支中遠端變更集的來源] 功能表選項,其可讓您選取遠端來源以使用遠端資料裝飾分支,進而瞭解需要提取的項目、查看瀏覽器差異,以及觸發複寫命令。
Plastic SCM 的重點在於協助團隊採用分散式開發。為此,我們增強了 DBrEx,但為處理數百個分散式變更集而建立了新透視:分散式檢視。
[同步檢視] 可讓您輕鬆同步處理任何儲存庫組合,瀏覽和差異比對要推送或提取的暫止變更。
若要取得有關如何使用同步的所有資訊,請參閱 GUI 指南中的同步檢視一節。