我们正在使用Rational Software architect对我们的设计进行建模。我们在Github中有自己的存储库,可以在团队成员之间进行协作。我们面临着合并/冲突的问题。因此,如果一个团队成员在模型中做了一些更改,并提交/推送了他的更改,而其他成员试图拉出这个更改,那么就会发生很多冲突。
不幸的是,这些冲突主要与.emx文件中元数据的更改有关,这些更改是由RSA自己完成的。这些冲突很难解决,而且这些不是人类可读的行。
还有谁在使用RSA和GitHub时遇到过类似的问题?
发布于 2015-05-06 14:09:49
你的问题不是真正的RSA,而是git。更准确地说是你的git客户端。
RSA可以进行人类可读的比较或合并,它分析不同版本内容的语义。但要做到这一点,它需要内容保持不变,而不是被你的git客户端产生的"diff“行污染。它只是希望拥有版本的原始内容。大多数版本控制系统都认为自己能够做出改变,但由于内容复杂,他们无法理解其中的语义。
如果你使用CVS,eclipse客户端只会给出完整版本的原样,并将diff委托给"rsa diff工具“,一切都会在这里正常工作。
发布于 2015-01-31 20:01:08
我目前正在为您在问题中描述的相同问题寻找解决方案。然而,在我的公司,RSA本身是用来解决这些合并冲突的。因此,如果您使用的合并工具或编辑器不能处理规范化的XML文件,那么我下面建议的解决方案将不能完全适用于您。我们确实观察到了相同的问题,因为我们使用Gerrit来审查代码,并且正如您在问题中所说的,源代码不是人类可读的,因此不可能在Gerrit UI中审查或评论。
文件扩展名为.efx和.emx的XML文档中嵌入的源代码已被修改或规范化,以便将换行符、引号和其他字符替换为相应的超文本标记语言编码序列。Git和Gerrit期望每个源代码行都以换行符结束,因此结果几乎是无限长的行,这些行由所谓的片段中的所有源代码行组成,这些代码行连接在一起,并散布着一些HTML编码序列。
我们公司的一些人至少在git中添加了一个粗糙的diff过滤器,这样当你调用'git show','git diff‘和其他命令来查看文件内容时,嵌入的源代码行是人类可读的。过滤器只是一堆全局搜索和替换语句,用相应的UTF-8字符替换大约12个HTML编码的序列。
要解决这个问题,我认为基本上有两种选择;
1)向Gerrit添加某种筛选器,其工作方式与前面提到的git的diff筛选器非常相似,将HTML编码序列替换为相应的UTF-8字符。
2)向git添加污点和干净过滤器,以便在签入代码时,源代码行会在HTML编码行旁边的HTML注释中转换为UTF-8。在Gerrit中,可以按照作者的意图查看源代码,这样就可以正常地进行审查和注释。签出时,污点过滤器会删除HTML注释和其中的源代码,留下的.efx和.emx看起来与RSA将内容写入磁盘时完全一样。尽管这将更改文件内容,并且由于源代码重复,文件大小实际上增加了一倍,但内容仍将是一个有效的XML文档,不应影响RSA,即使HTML注释应通过涂抹过程也是如此。
最近,我听说RSA的最新版本,我相信,9.1,可以配置为使片段文件中的嵌入式源代码或多或少保持不变,这样就可以在Gerrit中对其进行审查和检查,而不需要像上面列出的那些变通方法。我还没有确认这是否真的像所描述的那样工作。
https://stackoverflow.com/questions/25267134
复制相似问题