管理版本控制下的模型和关系图
在 Visual Studio 旗舰版 中,可以将建模项目和关系图文件、关系图文件 (.dgml) 和体系结构资源管理器查询文件 (.dgql) 放在 Team Foundation 版本控制 下。 有关详细信息,请参阅 向服务器添加文件。
当多个用户处理同一个建模项目时需要格外小心。
重要
有关如何组织大型或中型项目中的模型的建议,请参见构造建模解决方案。
建模项目中的文件
多个用户可同时处理一个建模项目,条件是他们处理不同的文件。
为避免或解决不同用户进行的更改之间发生冲突,了解模型在文件中的存储方式很重要。
每个包都存储在单独的 .uml 文件中,该文件保留在 ModelDefinition 项目文件夹中。 模型也包含 .uml 文件。 如果其中一个文件被删除或损坏,则相应的包或模型将丢失。
每个关系图存储在两个文件中。 例如,类图具有:
DiagramName.classdiagram - 如果此文件被删除或损坏,则关系图将丢失,但它显示的类和关联仍将留在模型中,并且可以在 UML 模型资源管理器中查看。
DiagramName.classdiagram.layout - 如果此文件被删除,则形状仍将显示关系图,但其大小和位置将丢失。 每个布局文件都是关系图文件的补充文件。 若要查看该文件,请在解决方案资源管理器中单击关系图文件旁边的 [+]。
备注
务必保持文件的一致性。例如,如果使用源代码管理以回滚在 .uml 文件中的更改,则应同时回滚在 *diagram 和 .layout 文件中相应的更改。在 .*diagram 文件中表示的元素如果未在 .uml 文件表示,这些元素就会丢失。
处理共享建模项目
若要最大程度地减少并发处理项目的不同部分所发生的冲突,请执行下列操作:
将建模项目划分为表示不同工作区域的包。 将整个模型移到不同包中,而不是将其留在根模型中。 有关详细信息,请参阅 定义包和命名空间。
不同用户不应同时处理同一个包或关系图。
如果您要使用配置文件,请确保每个用户都安装了相同的配置文件。 请参见 使用配置文件和构造型自定义模型。
若要帮助确保您仅更改当前所处理的包,请执行下列操作:
设置 UML 类、组件或用例图的**“Linked Package”**属性。
在 UML 模型资源管理器中,在创建活动或交互后立即将该活动或交互拖到包中。 此元素将在您创建活动图或序列图中的第一个节点时显示在 UML 模型资源管理器中。
为帮助您跟踪包,请重命名包文件以反映实际包名称。
在 Team Foundation 版本控制中,始终对整个建模项目而不要对单个文件执行**“签入”和“获取最新版本”**操作。
始终在正要签入建模项目之前执行**“获取”**操作。
始终在执行**“获取”**操作之前关闭所有关系图。
备注
如果在执行“获取”时某个文件处于打开状态,并且该操作导致本地更改,则系统将提示您重新加载该文件。在这种情况下,请单击“否”,然后重新加载整个项目。在“解决方案资源管理器”中,右击建模项目节点,再单击“卸载项目”,然后单击“重新加载项目”。
需要独占访问模型的更改
在进行以下类型的更改之前,请确保您拥有整个项目的“签出”锁。
重命名或删除从其他包引用的元素。
更改跨越包边界的关系的属性。
若要了解关于“签出”锁的信息,请参见签出和编辑文件。
将关系图文件移入或移出项目文件夹
启动“Visual Studio 的开发人员命令提示”。
使用 tf rename 移动关系图文件及其 .layout 文件:
tf rename sourcePath targetPath
在解决方案资源管理器中,右击该文件,再单击**“从项目中排除”**。
向目标文件夹添加该文件。
在解决方案资源管理器中,右击目标文件夹或项目,指向**“添加”,然后单击“现有项”。 在对话框中选择关系图文件,再单击“添加”**。 布局文件将会自动添加。
备注
不能将该文件移到其他项目。
合并模型文件和关系图中的更改
多个用户并发处理一个模型后,Team Foundation 版本控制将提示您合并模型文件中的更改。 按照前面几节所述处理分离的项目可避免大多数合并。 通常,其余的冲突可以安全地自动合并。 以下类型的更改不会带来麻烦:
生命线类型。 除非您是基于现有类型创建了生命线,否则向交互(序列图)添加生命线时,其类型将存储在根模型中。
新的活动和交互最初存储在根模型中。
添加元素和关系。
重命名或删除仅在其所在包中引用的元素。