我有一个包含许多(> 50)包的Eclipse工作区。某些捆绑包包含特殊项目设置,例如,客户特定的代码格式。
如果我设置一个新的工作区并使用客户特定的代码格式签出现有项目,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改变了这一行以及如何避免它?
答案 0 :(得分:6)
不要将你的日食设置存储在颠覆中! 它不允许您拥有不同的设置或不同的eclipse版本。 如果你有不同的环境,这将是一个真正的痛苦。
如果要保持工作区设置同步,请考虑使用Workspace Mechanics之类的内容。
如果这只是为了共享您的格式设置,请将它们导出为XML并将XML文件存储在您的存储库中。每个开发人员都可以导入XML文件。
答案 1 :(得分: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
。这个类没有做正确的事情就像写出时间戳一样。
为什么使用这个类,以及在使用它的情况下,从代码中不是很清楚......
但有一件事是肯定的,我找不到办法避免这种情况!
答案 2 :(得分:1)
这可能是行结尾的问题吗?您特定版本的Eclipse的特性?
如果SVN中用于文件的EOL字符与用于开发的机器上的默认字符不匹配,我可以想象Eclipse重写设置文件而没有任何明显的实质性更改。在这种情况下,您应该只在切换机器时看到问题。修复方法是将svn:eol-style
= native
属性添加到有问题的文件中。
我限制自己对这个问题的猜测,因为我无法复制你所看到的行为,有或没有不匹配的行结尾。我在repo中有许多带有配置文件的Eclipse项目,虽然Eclipse不会以不合需要的方式自动更改它们,但它们总是在实质上发生变化。仅仅通过在Eclipse Helios SR2(更符合设置文件的格式)或Eclipse SDK 3.7.2(M20120208-0800)上导入项目,我无法获取任何设置文件来仅更改其日期戳。也许只是升级Eclipse会解决问题(一定要导出你的设置!)。