我有一个 Eclipse 工作区,其中包含许多 (> 50) 个捆绑包。某些捆绑包包含特殊的项目设置,例如,客户特定的代码格式。
如果我设置一个新的工作区并使用客户特定的代码格式签出现有项目,Eclipse 会自动将org.eclipse.jdt.ui.prefs
中的日期注释更改为当前日期!
这是SVN中的首选项文件(org.eclipse.jdt.ui.prefs
):
#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
如果我将整个项目的编码设置为 UTF-8,则org.eclipse.core.resources.prefs
设置文件也会发生同样的情况。
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.prefs
和org.eclipse.jdt.ui.prefs
),则只会更改org.eclipse.core.resources.prefs
设置文件!
有人知道为什么 Eclipse 会改变这条线,以及我怎样才能避免它吗?
在 Subversion 中存储你的 eclipse 设置!!它不允许你有不同的设置或不同的日食版本。如果你有不同的环境,那将是一个真正的痛苦。
如果要保持工作区设置同步,请考虑使用工作区机制之类的内容。
如果这只是为了共享您的格式设置,请将其导出为 XML 并将 XML 文件存储在存储库中。每个开发人员都可以导入XML文件。
很多场合让我感到困惑,但我不确定我能给你一个完整的答案。
首先,我的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
。这个类不做正确的事情,只是写出时间戳。
为什么使用这个类以及在哪些情况下使用它,从代码中不是很清楚......
但有一件事是肯定的,我找不到避免这种情况的方法!
这可能是行尾的问题吗? 您的特定版本的 Eclipse 有什么特点?
我可以想象,如果SVN中用于文件的EOL字符与用于开发的机器上的默认值不匹配,Eclipse重写设置文件而没有任何明显的实质性更改。 但是,在这种情况下,您应该仅在切换计算机时看到问题。 解决方法是将 svn:eol-style
= native
属性添加到有问题的文件中。
我仅限于对问题的猜测,因为我无法复制您所看到的行为,无论是否有不匹配的行尾。 我有许多 Eclipse 项目,在存储库中带有配置文件,尽管 Eclipse 以不受欢迎的方式自动更改它们并不罕见,但它们总是被实质性地更改。 我无法仅通过在 Eclipse Helios SR2(与您的设置文件格式更好地匹配)或 Eclipse SDK 3.7.2 (M20120208-0800) 上导入其项目来获取任何设置文件仅更改其日期戳。 也许仅仅升级 Eclipse 就可以解决问题(请务必导出您的设置!