10

我已经使用 eclipse 进行 java android 开发 6 个月了,我喜欢比较编辑器。在过去的几天里,我一直在破解,我想我所有的 git 鸭子都排成一排,或者足够接近,以至于东西干净整洁,我可以找到旧的工作版本的应用程序。

但似乎在最后一两天,eclipse 比较编辑器已经停止显示差异!我右键单击未提交的 PlayThread.java 并选择与 Commit... 或 HEAD 或 branch 或任何东西进行比较,无论文件多么相似,比较编辑器都会在其右侧显示一个大白条,然后单击转到下一个差异突出显示整个文件!

我查看了 git 并比较了 eclipse 的偏好,找不到任何可能有帮助的东西。

任何让我漂亮的比较编辑器再次为我工作的帮助将不胜感激!

4

4 回答 4

14

关于 Javascript compair 什么都没有显示,有一个已知的错误。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=509820

解决方法...

  • 窗口>>首选项>>常规选项卡>>比较/补丁
  • 取消选中“自动打开结构比较”旁边的复选框
于 2018-04-16T13:46:10.930 回答
10

请注意最新的EGit 5.3.0(2020 年 2 月,8 年后)改进了比较编辑器的右侧,使用了Vivek回答Eclipse -> Preferences -> Text Editors -> Show whitespace characters中提到的内容。

Eclipse 中的文本比较已得到改进,以使“显示空白”在更多情况下工作。

此外,在合并编辑器和在同一文件上打开的另一个编辑器中同时编辑文件已得到改进,现在工作得更好,甚至对于不在 Eclipse 工作区中的文件也是如此。

https://wiki.eclipse.org/images/a/aa/EGit_Compare_Editor_Show_Whitespace.png -- Eclipse 中 Java 比较的屏幕截图(工作空间与索引)显示索引侧的空白

请注意,显示空白和并发编辑不仅取决于 EGit 设置比较的方式(这是我们改进的),还取决于实际使用的编辑器。这些编辑器不受 EGit 的控制。

对于不在 Eclipse 工作区中的文件,当文件在另一个编辑器中打开时,可能会遇到平台错误 214351 。


原始答案(2012 年 5 月):

比较编辑器在其右侧显示一个大白条,

这意味着 Egit 认为该文件(在您的磁盘上)的本地内容与已提交的内容完全不同。
发生这种情况的一个经典案例是自动 eol 转换(Windows <=> Unix),这就是我总是设置core.autocrlffalse.
请参阅“ Windows 上的 Git beta (msysgit) - Unix 或 DOS 行终止”。
另请参阅“使用代码分发 git 配置.gitattribute”以通过文件管理这些 eol ( EGit 尚不支持.gitattribute文件除外)。


在这种情况下,OP mwengler报告:

嗯,就是这样。
我修复它的方式是在Eclipse > Window > Preferences > General > Compare/Patch > General我检查“ Ignore white space”的那个页面上,现在编辑器显示我的差异。
但我想我会关掉那些autocrlf东西,我不认为我在 Windows 上使用任何不能同时处理这两种口味的东西

请参阅Egit bug 361503,其中提到此“忽略空白”现在也支持该core.autocrlf设置。


于 2012-05-05T00:15:39.887 回答
2

以下设置也适用于 Eclipse Oxygen Release。

这似乎与结构化比较有关。至

使用比较选择的更简单且明显有效的版本:

  • 窗口 > 首选项 > 常规选项卡 > 比较/补丁
  • 取消选中“自动打开结构比较”旁边的复选框

享受 ES6 类的文本级别差异。

问候, Rasool Javeed Mohammad javeed.mca@gmail.com

于 2018-05-11T16:17:39.770 回答
2

很久以后,我再次陷入了这个问题。每次我解决这个问题并继续前进,但这次我尝试了解根本原因并修复它,因为对我有用的修复不在这个问题的答案中,因此添加了详细信息部分:

EGit在 Eclipse 中使用插件,问题与OP相同- Eclipse 比较工具没有突出差异,而是整个块,好像整个文件已更改。

让我们先了解一下这个问题,因为我知道这与CRLFvs LFeol 有关,所以首先检查并启用可见性:

Eclipse -> 首选项 -> 文本编辑器 -> 显示空白字符 在此处输入图像描述

在上面点击配置可见性

在此处输入图像描述

现在,正如您在上图中看到的突出显示的那样,选中Trailing下的复选框并反对Carrier Return (CR)Line Feed (LF)

应用 - 保存并关闭。现在就我而言,文件看起来像这样:

在此处输入图像描述

这很明显,对我来说,我有CRLF像 eol 这样的窗口,这进一步证实了我没有core.autocrlf设置,true因此默认情况下它实际上没有尝试对我的 EOL 分隔符做任何事情(如本例中所预期的那样)。falseGit

直到这个阶段,比较工具将整个文件显示为已更改。

现在,着手解决对我有用的问题。

因为,我想在 IDE 领域得到这个修复,所以我首先将特定文件转换为 Unix 分隔符: 在此处输入图像描述

然后我的文件变成了 LF (Unix delimiter) eol :

在此处输入图像描述

并且比较工具开始突出显示增量。

在此处输入图像描述

因此,假设问题是由于CRLF(窗口样式)eol 和 Eclipse 比较器无法突出显示增量而不是整个文件。

然后,而不是将每个文件或包更改为 Unix delimiters 。我在 Eclipse->Preferences -> Workspace 中更新了 在此处输入图像描述

通过这种方式,eclipse 会处理新文件到 的行尾Unix,以便文本文件以不特定于 Windows 操作系统的格式保存,并且最容易在异构开发人员桌面之间共享。毕竟,这个比较工具一直很愉快地工作。

希望这可以帮助。

于 2019-03-23T03:05:48.540 回答