svn服务器如何扫描文件,基于文件仓库进行建模协作(EA+SVN)

f55965ce1c01b13b0ea1dcae6ade9edd.png

在文章《协同建模&版本管理(基于EA)》一文中,我们提到EA有四种协同建模方式:

基于本地文件

基本共享文件仓库

基于模型数据库

基于云服务

今天我们主要介绍一下第二种方式 基于共享文件仓库进行建模协作。这种方式主要是对EA中各个模型包应用版本控制来实现。任何包都可以应用版本控制——无论是模型的根节点、视图还是子包。

41185c9ce0f42c64207ed6a41ed8c2f8.png

Enterprise Architect支持模型中版本控制包的两种主要方式:

1、 Model Baselines模型基线:这是EA内置的功能,可以在模型存储库本身中存储包的时间点快照。

e22f76d6d528cabf7e7a721c9a5b898d.png

2、Version Control Integration版本控制集成: EA支持与第三方版本控制系统的集成,它支持的版本控制工具包括Subversion、CVS、Microsoft的TFS和SCC兼容工具,如Accurev和Visual

Source Safe。

接下来我们主要看一下如何通过SVN实现模型的版本控制。

EA +SVN协同建模

基于SVN进行协同建模这种方式包含服务器端和客户端。服务器安装版本控制服务器组件存放文件仓库。用户在客户端EA中通过版本控制系统连接访问服务器上的文件仓库。

1c5abb971e488c702e615bb49ba37fdc.png

EA +SVN版本控制系统组成:

部分

说明

版本控制服务器

安装基于文件的版本控制系统SVN管理端,配置版本控制服务。

版本控制客户端

安装SVN客户端,安装EA,建立工作副本文件夹,连接服务器,配置EA版本控制

安装软件:

VisualSvn Server svn服务器

Tortoise Svn svn客户端

Enterprise Architect

操作指南:

7cc31adb11b22fdad5335e246bc16b50.png

基于EA+SVN协作如下工作场景

在服务器建立模型文件仓库,

管理员在EA客户端中把模型提交到文件仓库管理起来,

多人进行并发建模:

其他用户可以check out 一个 package,编辑,check in;此时其他用户对锁定的package无法编辑,只能阅读。

如果一个用户正在阅读一个package,check out 的用户 check in 了此package,则提醒更新。

可以把一个模型文件仓库备份,

我们进行如下操作:

操作1: SVN服务器配置

1. 下载安装软件

现在Subversion已经迁移到apache网站上了,官网下载地址:http://subversion.apache.org/packages.html

我们一般是VisualSVN server 服务端和TortoiseSVN 客户端搭配使用

VisualSVN可以极大地简化Subversion服务器的安装,配置和管理。

2. 创建一个仓库

3. 创建版本控制项目(或用于特定项目的模块或文件夹)

4. 配置用户ID和密码

操作2:SVN客户端配置

1、安装客户端SVN软件

我们选择TortoiseSVN客户端,下载安装

2、建立工作副本文件夹,连接SVN服务器

当版本库初始化完毕后,还只是一个空目录,里面没有任何内容。所以需要先在本地创建并制作初始的设计图,然后将其提交到版本库中。这个工作基本上只需要做一次。

在这个本地空间,用户可以用SVN检出已有的ea项目到新建的EA工作空间

操作3、设置EA版本控制

在本地创建一个空的eap文件,右击Model——Package Controll——Version

Controll Settings

7fce481d4e2867ffdbcace2134cd1866.png

操作4、在EA中进行基于SVN的版本管理

1、添加分支到版本控制

右键点击“Project Browser”中本地副本的包,在弹出菜单中,选择“Package Control

-> Add Branch to Version Control”,将本地内容提交版本控制。

8d79b672e507bee253447f991dc9fbd4.png

b7983e243ceb495ae3aa4b34f70f0bd2.png

在“版本控制”工作副本文件夹中创建多个子文件夹,然后导出所选模型分支中的所有“包”。系统根据程序包GUID为XMI文件生成文件名。

注意:

在选择此命令之前,必须在模型中定义用于此操作的版本控制配置

在模型根节点上调用此命令时,会将版本控制应用于模型中的每个Package

版本提交成功后,可以看到在“Browser"窗口中,节点上已经被明显地添加了加锁的标记。这表明该节点内的Package,已经纳入版本控制管理了。

f79c61e0dc3c62082defbeea52b4c6f6.png

这个时候不能再进行操作,如果添加新元素会显示如下提示:

a72b1a381ff26e85afd0a65d733b034d.png

右键单击选择Package Control > Check Out Branch 之后,节点上没有了锁的标记。

edf9e80203ae2c90f1b42b5e025cfd39.png

2、导出模型分支

导出EAB文件,项目组其他成员导入用。右键单击选择Package Control > Export

as Model Branch

29e36c88f28ce1a64e5f99a286578829.png

导出EAB文件,项目组其他成员可以导入用。文档名称可以自定义。

7b92c8bf3bfa3c99e73fb6d7b025784f.png

3、导入模型分支

选中一个包右键单击Package Control > Import a Model Branch

145fd39eadf65cb43b6e1df2b138552d.png

4、其他版本控制操作

641e43f9d0c4dbe995b6bd7529d92c01.png

选中一个包右键Package Control 右侧有很多菜单项,具体功能如下表。

操作

说明

Check

In Branch

签入分支

f6192c2ab58fa8c7db91c6752a013260.png

当前所选模型分支中包含的签入模型包(即所选模型包及其所有子模型包)。

“选择要签入的模型包”对话框列出了该分支中已签出的所有版本控制的模型包。您可以在列表中选择包,然后提交以进行签入。

您还可以选择在对版本控制提交新修订后将模型包保留为未签出状态。

Check

Out Branch

签出分支

递归检出当前所选模型分支中包含的所有模型包(即所选模型包及其所有子模型包),这些包是受版本控制的并已签入。

Check

In

签入

c7bdc84dea62985a98f7ea180c195c12.png

将当前所选模型包的新修订提交到版本控制存储库,并锁定该模型包以免进一步编辑。

仅适用于您自己签出的包。

Check

Out签出

将当前选择的模型包与版本控制存储库中的最新修订版进行同步,然后解锁该模型包以进行编辑。

仅适用于尚未签出的包(以及尚未签出其关联模型包文件的包)。

Undo

Check Out

撤消签出

a1d5d8855f35a56f094a4b422dcffcbf.png将选定的程序包还原到版本控制存储库中的最新版本,并锁定该包以免进一步编辑。

Put

Latest

更新到最新

a27e72839461b08305df11b544b1624e.png

将当前选定的模型包的新修订提交到版本控制存储库,同时使模型包保持check out 状态。

这等效于check in包并立即再次将其check out。

仅适用于自己签出的模型包。

Get

Latest

获取最新

符合当前适用案例的工具应支持其他适用案例所需的所有扩展单元,这实际上意味着支持MARTE的所有必要特性。

Get

All Latest

获取所有最新

d1fa7a256a0e746813c8859de5d42b85.png

将项目中的所有版本控制包更新为从版本控制检索到的最新版本。

仅更新当前签入的模型包。

检索到最新修订后,系统将扫描所有受控程序包,并通过将程序包与其XMI 1.1文件进行比较来修复所有丢失的交叉引用。

如果XMI中的交叉引用信息与模型不匹配,则系统使用XMI中的信息更新模型,并将此更新记录在“系统输出”窗口中。

您可以通过选择“系统输出”窗口中的条目并使用上下文菜单选项“回滚更新”(如果选择了多个条目,则使用“回滚所选更新”)来回滚此类更新。

• 关闭模型会清除“系统输出”窗口中的条目

• 回滚更新时,也会清除“系统输出”窗口中的条目

Scan

XMI and Reconcile Model

扫描XMI和协调模型

bf084b4182b85351d4fa67f75fddffb7.png

扫描与每个项目的受控程序包相关的程序包XMI文件,并恢复在项目中检测到缺少的任何图表对象或交叉引用。

此功能在团队环境中非常有用,在团队环境中,每个用户维护自己的模型数据库的私有副本(即多个私有项目文件),并且通过使用受控程序包传播模型更新。当模型托管在所有团队成员都可以访问的单个共享数据库中时,它没有任何好处。

将每个受控程序包与其关联的XMI文件进行比较,如果模型中的交叉引用信息与XMI不匹配,则系统使用来自XMI的信息更新模型,并将更新记录在“系统输出”窗口中。

您可以通过右键单击“系统输出”窗口中的条目并选择“回滚更新”选项(如果选择了多个条目,则选择“回滚选定的更新”)来回滚此类更新。

关闭模型会清除“系统输出”窗口中的条目;当您回滚更新时,窗口中的一个条目也会被清除。

此功能作为“获取所有最新”操作的一部分自动调用。

在使用私有模型部署的环境中工作并且您的模型包含大量交叉包引用时,建议您在重新导入受控包之后不时调用“扫描XMI和协调模型”

-例如,在使用“获取最新信息”更新多个模型包之后-或在执行了许多模型包检出之后。

通常,避免在未提交模型更改的情况下运行“扫描XMI和协调模型”。通常,您:

• Check out 一些package

• 调用“扫描XMI和协调模型”

• 进行修改

• 提交所有未完成的更改,然后再签出更多模型包并再次运行“扫描XMI和协调模型”

File

Properties文件属性

656772c4b8610738180c5a7fd8af138b.png

显示与与当前所选模型包关联的XMI导出文件有关的版本控制属性;这也可以确定谁签出了包。

File

History

文件历史

91d212545970c857fabae9f8943125af.png

显示当前所选模型包的更改历史记录信息。

恢复或检出该模型包的先前版本。

Compare

with Controlled Version

与受控版本比较

将当前选择的程序包与从版本控制中检索到的相关XMI文件的最新版本进行比较。

Add

Branch to Version Control

将分支添加到版本控制

只需一次操作,即可将版本控制应用于选定模型分支内的所有模型包。

在这种情况下,模型分支是当前在“浏览器”窗口中选择的“包”,其中包含所有包。

Export

as Model Branch

导出为模型分支

从您自己的模型私人副本中导出新创建的模型分支。

Import

a Model Branch

导入模型分支

检索模型分支并将其导入到源模型或另一个模型中。

Get

Package

取得包

访问版本控制存储库中模型中当前不可用的模型包。

Re-synch

Status With VC Provider

与VC提供程序重新同步状态

在不执行XMI导入或导出的情况下,更新为项目中的选定程序包记录的版本控制状态值,以使其与版本控制提供程序报告的值相匹配。

当项目中记录的程序包的版本控制状态与版本控制提供程序报告的版本控制状态不同步时,请使用此功能。

Version

Control Settings

版本控制设置

显示“版本控制设置”对话框。

939c1764f6f9b9acc8c32bd18d132f30.png

火龙果软件提供团队协同建模环境的咨询服务,可以帮助用户搭建完整的团队建模和MBSE解决方案,详细信息请见http://tool.uml.com.cn/ToolsEA/introduce.asp

如果您希望了解更多信息:

也欢迎直接联系我们 zhgx@uml.net.cn ,010-62670969

后记

希望您读了此文后有所受益。

如果您有经验乐于分享,欢迎投稿给我们。

如果您对我们的培训、咨询和工具感兴趣:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取本地 qt_用QT实现视频/音乐播放组件

前言我已经有四五天没有发布文章了,趁着这个周末有空,就又开始构思我们自己的QT组件库中的新组件,思考还有哪些有用、有趣、值得研究学习并构建实现的组件,于是又有了两个新的目标,即多媒体播放组件和地图组件。之所以…

c++文件读写

http://stlchina.huhoo.net/bin/view.pl/Main/STLDetailString 添加#include <fstream> using namespace std; View Code 1 //ofstream myfile("c:\\1.txt",ios::out|ios::trunc);2 //3 //myfile<<"中国国国" << endl<< "网…

谁在窥屏_TheShy直播被窥屏搞怕了,为了防止被窥屏,这个做法绝了

前言&#xff1a;英雄联盟LPL赛区已经发展了十年&#xff0c;请你大胆试想下&#xff0c;如果终有一天英雄联盟会被其他游戏所淹没替代&#xff0c;让你选出自己心目中最强的游戏玩家&#xff0c;你的脑海里首先浮现的是谁的身影呢&#xff1f;笔者的脑海里首先是TheShy。TheSh…

前端学习(516):两列布局的第三种解决方案

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>第三种实现方案</title><style>.parent…

qchart 设置线颜色_实战PyQt5: 137-QChart图表之散点图

散点图(scatter chart)将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。在QChart中&#xff0c;使用类QScatterSeries创建散点图。QScatterSeriesQScatterSeries类在散点图中显示数据。散点数据在图表上显示为…

C#下如何实现服务器 + 客户端的聊天程序

最近也在接触SOCKET编程&#xff0c;在当今这样一个网络时代&#xff0c;很多技术都以网络为中心在诞生&#xff0c;至少我认为是这样的&#xff0c;而SOCKET套接字接口&#xff0c;在实现网络通讯上处于关键地位&#xff0c;所以不会SOCKET是不行的。首先&#xff0c;本文主要…

部署gogs_可以更快地查阅 Gogs 文档了!

# 可以更快地查阅 Gogs 文档了&#xff01;作为程序员&#xff0c;如何高效、准确地查阅文档是日常开发工作中的必备技能。长期以来&#xff0c;优秀开源项目的官方文档都是部署在国外服务器上&#xff0c;从国内访问非常慢&#xff0c;而由于众所周知的限制&#xff0c;部分文…

c++ mmap写入速度_Linux系统编程_用mmap+数组的方式修改数据文件

正文开始前&#xff0c;先聊点非技术的东西&#xff0c;推荐2本生动有趣的书&#xff1a;《经济学原理 宏观经济学》&#xff0c;曼昆&#xff0c;豆瓣评分9.3&#xff0c;4945人评价《经济学原理 微观经济学》&#xff0c;曼昆&#xff0c;豆瓣评分9.6&#xff0c;1879人评价我…

太极软件qn的代码_多版本QQ内置qn、qx模块

软件名称&#xff1a;QQ版本号&#xff1a;1362、1392、1558版本&#xff1a;8.3.0、8.3.5、8.4.18安装包大小&#xff1a;81.93m、88.64m、100.93m简介&#xff1a;分别是830、835、8418这三个版本的QQ&#xff0c;只内置qn、qx模块&#xff0c;可以实现无需root&#xff0c;无…

asp.net 导入excel显示进度

这几天在做个导入excel的上传页面&#xff0c;由于数据量太大&#xff0c;要显示个进度条&#xff0c;本人不懂jquery&#xff0c;所以百度完再经过调整之后完成了&#xff0c;如果告诉别人只是为了显示个进度条而弄个多线程&#xff0c;还要根据session的机制模拟一个具有sess…

element form自定义校验_SpringBoot分组校验及自定义校验注解

前言在日常的开发中&#xff0c;参数校验是非常重要的一个环节&#xff0c;严格参数校验会减少很多出bug的概率&#xff0c;增加接口的安全性。在此之前写过一篇SpringBoot统一参数校验主要介绍了一些简单的校验方法。而这篇则是介绍一些进阶的校验方式。比如说&#xff1a;在某…

前端学习(526):等分布局

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>等分布局</title><style>.col1{backgro…

前端学习(527):等分布局第二种方案

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>等分布局</title><style>.parent{width…

c语言 feof_C语言 技能提升 系列文章(六)文件操作

C语言除了提供open()/ read()/ write()/ close() 这些基本的操作以外&#xff0c;还提供了下面几个非常有用的API。// 删除指定的文件int remove ( const char * filename ); // 重命名指定的文件int rename ( const char * oldname, const char * newname );// 以“wb”模式打…