0

我们正在使用 Rational Software 架构师来为我们的设计建模。我们在 Github 中有我们的存储库,可以在团队成员之间进行协作。我们面临的合并/冲突问题。因此,如果一个团队成员对模型进行了一些更改并提交/推送他的更改,而其他人试图拉动此更改,则会发生很多冲突。

不幸的是,这些冲突主要与 RSA 自己制作的 .emx 文件中元数据的更改有关。这些冲突很难解决,而且这些不是人类可读的行。

在 GitHub 上使用 RSA 时是否有其他人遇到过类似的问题

4

2 回答 2

1

您的问题不是真正的 RSA,而是 git。更准确地说是你的 git 客户端。

RSA 可以进行人类可读的差异或合并,它分析不同版本内容的语义。但为此,它需要内容保持不变,而不是被你的 git 客户端产生的“差异”行污染。它只是期望有版本的原始内容。大多数版本控制系统认为他们能够做出差异,但对于复杂的内容,他们无法理解语义。

如果您使用 CVS,eclipse 客户端只需保持完整版本不变,并将差异委托给“rsa 差异工具”,这里一切正常。

于 2015-05-06T06:09:49.443 回答
0

我目前正在研究您在问题中描述的同一问题的解决方案。但是,在我的公司,RSA 本身用于解决这些合并冲突。因此,如果您使用无法处理规范化 XML 文件的合并工具或编辑器,我建议的以下解决方案将无法完全满足您的需求。自从我们使用 Gerrit 审查代码以来,我们确实观察到了同样的问题,并且正如您在问题中所述,源代码不是人类可读的,因此无法在 Gerrit UI 中审查或评论。

嵌入在带有 .efx 和 .emx 文件扩展名的 XML 文档中的源代码已经过修改或规范化,以便将换行符、引号等字符替换为相应的 HTML 编码序列。Git 和 Gerrit 期望每个源代码行都以换行符结束,因此结果几乎是无限长的行,由所谓的片段连接中的所有源代码行组成,并穿插一些 HTML 编码序列。

我们公司至少有人在 git 中添加了一个粗略的 diff 过滤器,这样当您调用 'git show'、'git diff' 和其他命令来查看文件内容时,嵌入的源代码行是人类可读的。过滤器只是一堆全局搜索和替换语句,将大约十几个 HTML 编码序列替换为相应的 UTF-8 字符。

为了解决这个问题,我相信基本上有两种选择;

1) 向 Gerrit 添加某种过滤器,其工作方式与上面提到的 git 差异过滤器非常相似,将 HTML 编码序列替换为相应的 UTF-8 字符。

2) 向 git 添加 smudge 和 clean 过滤器,以便在签入代码时,源代码行在 HTML 注释中转换为 UTF-8,该注释位于 HTML 编码行旁边。在 Gerrit 中,可以按照作者的意图查看源代码,从而可以正常查看和评论。结帐时,涂抹过滤器会删除 HTML 注释和其中的源代码,使 .efx 和 .emx 看起来与 RSA 将内容写入磁盘时完全一样。尽管由于源代码重复,这将更改文件内容并有效地使大小加倍,但内容仍将是有效的 XML 文档,即使 HTML 注释应该在涂抹过程中幸存下来,也不应该影响 RSA。

最近我听说最新版本的 RSA,我相信 9.1,可以配置为保留片段文件中的嵌入式源代码或多或少完整,以便可以在 Gerrit 中查看和检查它,而无需像列出的那些变通办法以上。我还没有亲自确认这是否真的像描述的那样工作。

于 2015-01-31T12:01:07.997 回答