我们正在使用Rational Software架构师来设计我们的设计。我们在Github中拥有我们的存储库,以便在团队成员之间进行协作。合并/冲突面临的问题。 因此,如果一个团队成员对模型进行了一些更改并提交/推送他的更改以及其他尝试来进行此更改,则会发生许多冲突。
不幸的是,这些冲突主要与RSA自己制作的.emx文件中的元数据的变化有关。这些冲突很难解决,这些不是人类可读的行。
在使用RSA和GitHub
时,是否有其他人遇到过类似的问题答案 0 :(得分:1)
你的问题不是RSA,而是git。而且更准确地说是你的git客户端。
RSA可以进行人类可读的差异或合并,它分析不同版本内容的语义。但为此,它需要内容不变,不受git客户端产生的“diff”行的污染。它只是希望拥有该版本的原始内容。大多数版本控制系统认为他们能够制作差异,但是由于内容复杂,他们无法理解语义。
如果您使用CVS,eclipse客户端只需更改完整版本并将差异委托给“rsa diff工具”,这里的一切正常。
答案 1 :(得分:0)
我目前正在研究您在问题中描述的相同问题的解决方案。但是,在我公司,RSA本身用于解决这些合并冲突。因此,如果您使用的合并工具或编辑器无法使用规范化的XML文件,那么我建议的解决方案将无法完全适用于您。我们确实观察到相同的问题,因为我们使用Gerrit来检查代码,正如您在问题中所述,源代码不是人类可读的,因此无法在Gerrit UI中查看或评论。
嵌入在带有.efx和.emx文件扩展名的XML文档中的源代码已经过修改或规范化,因此换行符,引号等字符已被相应的HTML编码序列替换。 Git和Gerrit希望每个源代码行都以换行符结束,因此结果几乎是无限长的行,由所谓的片段连接的所有源代码行组成,并插入一些HTML编码序列。
我们公司的某个人至少为git添加了一个粗略的diff过滤器,这样当你调用'git show','git diff'和其他命令来查看文件内容时,嵌入的源代码行是人类可读的。过滤器只是一堆全局搜索和替换语句,用相应的UTF-8字符替换了大约十几个HTML编码序列。
为了解决这个问题,我相信基本上有两种选择;
1)为Gerrit添加一些过滤器,其工作方式与上面提到的git的diff过滤器非常相似,将HTML编码序列替换为相应的UTF-8字符。
2)添加涂抹和清理过滤器,以便在检查代码时,源代码行在HTML注释行中放置的HTML注释中转换为UTF-8。在Gerrit中,可以看到源代码,因为作者希望它能够正常地进行审查和评论。在结帐时,涂抹过滤器会删除HTML注释及其中的源代码,使.efx和.emx看起来与RSA将内容写入磁盘时完全相同。虽然这会改变文件内容,并且自重复源代码以来有效地将文件大小加倍,但内容仍然是一个有效的XML文档,即使HTML注释在涂抹过程中仍然存在,也不会影响RSA。
最近我听说我认为最新版本的RSA 9.1可以配置为将片段文件中的嵌入式源代码保持在或多或少的完整状态,以便可以在Gerrit中对其进行检查和检查,而无需使用诸如此类的解决方法。如上所列。我还没有确认自己这实际上是否如所描述的那样有效。