管理版本控制下的模型和关系图

在 Visual Studio 旗舰版 中,可以将建模项目和关系图文件、关系图文件 (.dgml) 和体系结构资源管理器查询文件 (.dgql) 放在 Team Foundation 版本控制 下。有关更多信息,请参见向服务器添加文件

当多个用户处理同一个建模项目时需要格外小心。

重要说明重要事项

有关如何组织大型或中型项目中的模型的建议,请参见构造建模解决方案

建模项目中的文件

多个用户可同时处理一个建模项目,条件是他们处理不同的文件。

为避免或解决不同用户进行的更改之间发生冲突,了解模型在文件中的存储方式很重要。

  • 每个包都存储在单独的 .uml 文件中,该文件保留在 ModelDefinition 项目文件夹中。模型也包含 .uml 文件。如果其中一个文件被删除或损坏,则相应的包或模型将丢失。

  • 每个关系图存储在两个文件中。例如,类图具有:

    • DiagramName.classdiagram - 如果此文件被删除或损坏,则关系图将丢失,但它显示的类和关联仍将留在模型中,并且可以在 UML 模型资源管理器中查看。

    • DiagramName.classdiagram.layout - 如果此文件被删除,则形状仍将显示关系图,但其大小和位置将丢失。每个布局文件都是关系图文件的补充文件。若要查看该文件,请在解决方案资源管理器中单击关系图文件旁边的 [+]。

说明说明

可以在文件之间的一致性很重要。例如,在中,如果使用源代码管理回滚在 .uml 文件中的更改,则应回滚中的相应更改。*diagram 和 .layout 文件同时。,如果是在 .uml 文件,也不表示在 a.*diagram 文件所表示的元素将丢失。

处理共享建模项目

若要最大程度地减少并发处理项目的不同部分所发生的冲突,请执行下列操作:

  • 将建模项目划分为表示不同工作区域的包。将整个模型移到不同包中,而不是将其留在根模型中。有关更多信息,请参见定义包和命名空间

  • 不同用户不应同时处理同一个包或关系图。

  • 如果您要使用配置文件,请确保每个用户都安装了相同的配置文件。请参见 使用配置文件和构造型自定义模型

  • 若要帮助确保您仅更改当前所处理的包,请执行下列操作:

    • 设置 UML 类、组件或用例图的**“Linked Package”**属性。

    • 在 UML 模型资源管理器中,在创建活动或交互后立即将该活动或交互拖到包中。此元素将在您创建活动图或序列图中的第一个节点时显示在 UML 模型资源管理器中。

  • 为帮助您跟踪包,请重命名包文件以反映实际包名称。

  • 在 Team Foundation 版本控制中,始终对整个建模项目而不要对单个文件执行**“签入”“获取最新版本”**操作。

  • 始终在正要签入建模项目之前执行**“获取”**操作。

  • 始终在执行**“获取”**操作之前关闭所有关系图。

    说明说明

    如果在执行“获取”时某个文件处于打开状态,并且该操作导致本地更改,则系统将提示您重新加载该文件。在这种情况下,请单击“否”,然后重新加载整个项目。在“解决方案资源管理器”中,右击建模项目节点,再单击“卸载项目”,然后单击“重新加载项目”

Dd574364.collapse_all(zh-cn,VS.110).gif需要独占访问模型的更改

在进行以下类型的更改之前,请确保您拥有整个项目的“签出”锁。

  • 重命名或删除从其他包引用的元素。

  • 更改跨越包边界的关系的属性。

  • 若要了解关于“签出”锁的信息,请参见签出和编辑文件

将关系图文件移入或移出项目文件夹

  1. 打开 Visual Studio 命令提示。

    在 Windows**“开始”菜单中,依次指向“所有程序”“Microsoft Visual Studio 2010”“Visual Studio 工具”,然后单击“Visual Studio 2010 命令提示”**。

  2. 使用 tf rename 移动关系图文件及其 .layout 文件:

    tf rename sourcePath targetPath

  3. 在解决方案资源管理器中,右击该文件,再单击**“从项目中排除”**。

  4. 向目标文件夹添加该文件。

    在解决方案资源管理器中,右击目标文件夹或项目,指向**“添加”,然后单击“现有项”。在对话框中选择关系图文件,再单击“添加”**。布局文件将会自动添加。

    说明说明

    不能将该文件移到其他项目。

合并模型文件和关系图中的更改

多个用户并发处理一个模型后,Team Foundation 版本控制将提示您合并模型文件中的更改。按照前面几节所述处理分离的项目可避免大多数合并。通常,其余的冲突可以安全地自动合并。以下类型的更改不会带来麻烦:

  • 生命线类型。除非您是基于现有类型创建了生命线,否则向交互(序列图)添加生命线时,其类型将存储在根模型中。

  • 新的活动和交互最初存储在根模型中。

  • 添加元素和关系。

  • 重命名或删除仅在其所在包中引用的元素。

请参见

概念

建立应用程序模型

其他资源

共享模型和导出关系图