7

我有一个包含许多(> 50)包的 Eclipse 工作区。一些捆绑包包含特殊的项目设置,例如,客户特定的代码格式。

如果我设置一个新的工作区并使用客户特定的代码格式签出现有项目,Eclipse 会org.eclipse.jdt.ui.prefs自动将日期注释更改为当前日期!

这是org.eclipse.jdt.ui.prefsSVN 中的首选项文件 ( ):

#Tue Apr 24 09:15:20 CEST 2012
eclipse.preferences.version=1
formatter_profile=_myProfile
formatter_settings_version=12

这是org.eclipse.jdt.ui.prefs结帐后的文件( ):

#Tue Apr 24 09:30:25 CEST 2012
eclipse.preferences.version=1
formatter_profile=_myProfile
formatter_settings_version=12

org.eclipse.core.resources.prefs如果我将整个项目的编码设置为 UTF-8,设置文件也会发生同样的情况。

SVN:

#Tue Apr 24 09:26:48 CEST 2012
eclipse.preferences.version=1
encoding/<project>=UTF-8

结帐后:

#Tue Apr 24 09:28:00 CEST 2012
eclipse.preferences.version=1
encoding/<project>=UTF-8

如果项目同时包含设置文件 (org.eclipse.core.resources.prefsorg.eclipse.jdt.ui.prefs),则只会org.eclipse.core.resources.prefs更改设置文件!

有人知道为什么Eclipse 会更改此行以及如何避免它吗?

4

3 回答 3

6

不要将您的 Eclipse 设置存储在 subversions 中!!!它不允许您有不同的设置或不同的 Eclipse 版本。如果你有不同的环境,那将是一个真正的痛苦。

如果您想保持工作空间设置同步,请考虑使用Workspace Mechanics之类的东西。

如果这只是为了共享您的格式设置,请将它们导出为 XML 并将 XML 文件存储在您的存储库中。每个开发人员都可以导入 XML 文件。

于 2012-05-01T22:15:40.413 回答
1

这可能是行尾的问题吗?您的特定 Eclipse 版本的特性?

如果 SVN 中用于文件的 EOL 字符与用于开发的机器上的默认值不匹配,我可以想象 Eclipse 重写设置文件而没有任何明显的实质性更改。但是,在这种情况下,您应该只在切换机器时看到问题。解决方法是将svn:eol-style=native属性添加到有问题的文件中。

我限制自己对这个问题的猜测,因为我无法复制你所看到的行为,不管有没有不匹配的行尾。我在 repo 中有许多带有配置文件的 Eclipse 项目,尽管 Eclipse 不经常以不受欢迎的方式自动更改它们,但它们总是会发生实质性的变化。仅通过在 Eclipse Helios SR2(更符合您的设置文件的格式)或 Eclipse SDK 3.7.2(M20120208-0800)上导入他们的项目,我无法获得任何设置文件来仅更改其日期戳。也许仅仅升级 Eclipse 就可以解决问题(一定要导出你的设置!)。

于 2012-05-03T03:00:55.077 回答
1

它在很多场合也让我感到困惑,但我不确定我能否给你一个完整的答案。

首先,我的org.eclipse.core.resources.prefs文件从不包含时间戳!我还有其他偏好文件——比如org.eclipse.jdt.ui.prefs——似乎总是有时间戳。在我目前的设置中,它们似乎从未被过度更新。

有几代偏好 API

  • org.eclipse.core.runtime.Preferences- 访问方式Plugin.getPluginPreferences()- 在 Eclipse 3.0 中已弃用;现在模拟 - 不要使用这个!
  • org.eclipse.jface.preference.*- 访问方式AbstractUIPlugin.getPreferenceStore()- 在 Eclipse 3.1 中被取代;现在模拟 - 用于字段编辑器
  • org.eclipse.core.runtime.preferences.*- 访问方式Platform.getPreferencesService()- 基于 OSGi 首选项服务

那些使用第三代 API 的首选项,读写首选项文件似乎总是通过EclipsePreferences. 这个类做了“正确”的事情并删除了时间戳。

在某些情况下——例如在处理 JDT 中的格式时——org.eclipse.jface.preference.PreferenceStore使用了一个特殊的。这个类没有做正确的事情,只是写出时间戳。

为什么使用这个类以及在什么情况下使用它,从代码中不是很清楚......

有一件事是肯定的,但我找不到避免这种情况的方法!

于 2012-05-02T21:13:48.677 回答