7

多くの(> 50)バンドルを含むEclipseワークスペースがあります。一部のバンドルには、顧客固有のコードフォーマットなどの特別なプロジェクト設定が含まれています。

新しいワークスペースをセットアップし、顧客固有のコード形式で既存のプロジェクトをチェックアウトすると、Eclipseは日付コメントをorg.eclipse.jdt.ui.prefs現在の日付に自動的に変更します。

org.eclipse.jdt.ui.prefsこれはSVNの設定ファイル( )です:

#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の設定をSubversionに保存しないでください!!! 異なる設定や異なるEclipseバージョンを持つことはできません。あなたが異なる環境を持っているなら、それは本当に苦痛になるでしょう。

ワークスペース設定の同期を維持したい場合は、ワークスペースメカニズムなどの使用を検討してください。

これがフォーマット設定を共有するためだけの場合は、それらをXMLとしてエクスポートし、XMLファイルをリポジトリに保存します。すべての開発者はXMLファイルをインポートできます。

于 2012-05-01T22:15:40.413 に答える
1

何度も戸惑いましたが、完全に答えられるかどうかはわかりません。

まず、私のorg.eclipse.core.resources.prefsファイルにはタイムスタンプが含まれていません。私は他の設定ファイルを持っています-のようにorg.eclipse.jdt.ui.prefs-常にタイムスタンプを持っているようです。私の現在の設定では、それらが過度に更新されているようには見えません。

プリファレンスAPIにはいくつかの世代があります

  • org.eclipse.core.runtime.Preferences-経由Plugin.getPluginPreferences()でアクセス-Eclipse3.0では非推奨。現在シミュレートされています-これは使用しないでください!
  • org.eclipse.jface.preference.*-経由でアクセスAbstractUIPlugin.getPreferenceStore()-Eclipse3.1で置き換えられました。現在シミュレートされています-フィールドエディタに使用されます
  • org.eclipse.core.runtime.preferences.*-経由でアクセスPlatform.getPreferencesService()-OSGiプリファレンスサービスに基づく

第3世代のAPIを使用するこれらの設定、設定ファイルの読み取りと書き込みは、常に。を介して行われるようですEclipsePreferences。このクラスは「正しい」ことを行い、タイムスタンプを削除します。

場合によっては(たとえば、JDTでのフォーマットの処理など)、特殊なorg.eclipse.jface.preference.PreferenceStoreものが使用されます。このクラスは、単にタイムスタンプを書き出すだけなので、正しいことをしません。

このクラスが使用される理由と、正確にどのような場合に使用されるのかは、コードからはあまり明確ではありません...

1つ確かなことは、これを回避する方法が見つからないことです。

于 2012-05-02T21:13:48.677 に答える
1

これは行末の問題でしょうか?Eclipseの特定のバージョンの特性は?

SVNのファイルに使用されているEOL文字が、開発に使用されているマシンのデフォルトと一致しなかった場合、Eclipseが設定ファイルを実質的な変更なしに書き換えることを想像できます。ただし、その場合は、マシンを切り替えるときにのみ問題が発生するはずです。修正は、問題のあるファイルにsvn:eol-style=nativeプロパティを追加することです。

行末の不一致の有無にかかわらず、表示されている動作を再現できないため、問題についての推測に限定します。リポジトリに構成ファイルを含む多数のEclipseプロジェクトがあり、Eclipseによって望ましくない方法で自動的に変更されることはめったにありませんが、常に実質的に変更されます。Eclipse Helios SR2(設定ファイルの形式によりよく一致する)またはEclipse SDK 3.7.2(M20120208-0800)のいずれかにプロジェクトをインポートするだけでは、日付スタンプのみを変更する設定ファイルを取得できません。たぶん、Eclipseをアップグレードするだけで問題が解決するでしょう(必ず設定をエクスポートしてください!)。

于 2012-05-03T03:00:55.077 に答える