在版本控制下管理模型與圖形
在 Visual Studio Ultimate 中,您可以將模型專案和圖表檔、圖形文件 (.dgml) 檔以及 [架構總管] 查詢 (.dgql) 檔放置到 Team Foundation 版本控制 下方。 如需詳細資訊,請參閱將檔案加入至伺服器。
有多位使用者進行同一個模型專案時,務必特別注意。
重要
如需有關如何在大型或中型專案內組織模型的建議,請參閱結構化和模型化方案。
模型專案中的檔案
模型專案上可以有多位使用者同時執行工作 (假設這些使用者處理不同的檔案)。
為避免或解決不同使用者所做的變更之間的衝突,務必了解模型儲存在檔案中的方式。
每一個封裝都會儲存在個別的 .uml 檔中,該檔案則保存在 ModelDefinition 專案資料夾內。 模型也有 .uml 檔。 如果其中一個檔案遭刪除或損毀,則會失去對應的封裝或模型。
每一個圖表都會儲存在兩個檔案中。 例如,類別圖表有:
DiagramName.classdiagram - 如果此檔案遭刪除或損毀,則會失去圖表,但是它顯示的類別和關聯仍會保留在模型中,而且可以在 [UML 模型總管] 中看見。
DiagramName.classdiagram.layout - 如果刪除此檔案,圖形仍會顯示圖表,但是會失去其大小和位置。 每一個配置檔都是圖表檔的附屬項目。 若要顯示配置檔,請在 [方案總管] 中按一下圖表檔旁邊的 [+]。
注意事項 |
---|
維護檔案之間的一致性是很重要的。例如,如果您使用來源控制以回復。.uml 檔案,您必須同時復原的*diagram 和 .layout 檔案上對應的變更。如果在 .uml 檔案的項目沒有表示,則.*diagram 檔案所表示的項目將會遺失。 |
在共用模型專案上執行工作
若要減少並行處理專案的不同部分時發生的衝突:
將您的模型專案分成數個封裝,代表不同的工作區域。 將整個模型移到封裝內,而不要留在根模型中。 如需詳細資訊,請參閱定義套件和命名空間。
不同的使用者不應同時處理相同的封裝或圖表。
如果您使用設定檔,務必確定每一個人都安裝相同的設定檔。 請參閱 使用設定檔和造型自訂您的模型。
為確保您僅變更所處理的封裝:
設定 UML 類別、元件或使用案例圖表的 [LinkedPackage] 屬性。
在 [UML 模型總管] 中,將剛建立的活動或互動拖曳至您的封裝。 這個項目會在您建立活動或順序圖表中的第一個節點時,出現在 [UML 模型總管] 中。
為幫助您追蹤封裝,請重新命名封裝檔以反映實際的封裝名稱。
在 Team Foundation 版本控制 中,務必在完整的模型專案上執行 [簽入] 和 [取得最新的版本] 作業,絕不要在個別檔案上執行。
務必在緊接著要簽入模型專案之前,先執行 [取得] 作業。
執行 [取得] 作業之前,務必先關閉所有圖表。
注意事項 如果在執行 [取得] 時有開啟的檔案,則作業會導致本機變更,並且會提示您重新載入檔案。在此情況下,按一下 [否],然後重新載入整個專案。以滑鼠右鍵按一下 [方案總管] 中的模型專案節點,並按一下 [卸載專案],然後按一下 [重新載入專案]。
必須獨佔存取模型才能進行變更
在您進行下列類型的變更之前,請先確定整個專案有 [簽出] 鎖定。
重新命名或刪除從其他封裝參考的項目。
變更超出封裝範圍的關聯性屬性。
若要了解 [簽出] 鎖定,請參閱簽出和編輯檔案。
若要在專案資料夾中移入或移出圖表檔
開啟 Visual Studio 命令提示字元。
在 Windows [開始] 功能表中,依序指向 [所有程式]、[Microsoft Visual Studio 2010]、[Visual Studio Tools],然後按一下 [Visual Studio 2010 命令提示字元]。
使用 tf rename 移動圖表檔及其 .layout 檔:
tf rename sourcePath targetPath
在 [方案總管] 中,以滑鼠右鍵按一下檔案,然後按一下 [從專案移除]。
將檔案加入至目的資料夾。
在 [方案總管] 中,以滑鼠右鍵按一下目的資料夾或專案,指向 [加入],然後按一下 [現有項目]。 在對話方塊中選取圖表檔,然後按一下 [加入]。 配置檔將自動加入。
注意事項 您無法將檔案移至不同的專案。
合併模型檔和圖表中的變更
多位使用者並行處理模型之後,Team Foundation 版本控制 將提示您合併模型檔案中的變更。 如前面幾節中所述處理不同的專案,將可避免大部分的合併。 一般而言,剩餘的衝突可順利自動合併。 以下幾種變更應該相當簡單:
生命線的型別。 當您將生命線加入至互動 (順序圖表) 時,除非您是從現有的型別建立生命線,否則其型別會儲存到根模型中。
新的活動和互動一開始會儲存到根模型中。
加入項目和關聯性。
重新命名或刪除僅在自己的封裝內參考的項目。