2012-04-24 30 views
7

私は多くの(> 50)バンドルを持つEclipseワークスペースを持っています。バンドルの中には、顧客固有のコード書式などの特別なプロジェクト設定が含まれているものもあります。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 

Iが設定されている場合、同じ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はこの行を変更し、どのように回避できますか?

+2

非常に興味深い質問です。私は答えがありませんが、1つのコメント:それはEclipseの設定をSubversionに保存すると便利ですが、時にはそれはあなたに噛まれます。 Subversionは完全なファイルしか保存できません.Eclipseの設定は、部品の生成、生成またはキャッシュされた部品です。 – mliebelt

+0

** Eclipseが日付を変更する理由:これは[java.util.Properties](http://docs.oracle.com/javase/6/docs/api)で処理される標準の '.properties'ファイル形式です。 /java/util/Properties.html)。ファイルに書き込まれた日付が含まれます。 –

答えて

6

あなたの日食の設定をサブバージョンに保存しないでください! 異なる設定や異なるEclipseバージョンを使用することはできません。 環境が違うと本当に苦しいでしょう。

ワークスペースの設定を同期させたい場合は、Workspace Mechanicsのようなものを使用することを検討してください。

フォーマット設定を共有する場合にのみ、XML形式でエクスポートし、XMLファイルをリポジトリに保存します。すべての開発者は、XMLファイルをインポートできます。

+0

あなたの答えをありがとうが、 - (1)一般的に我々は標準的な開発者の日食があります。すべての開発者は同じバージョンです!しかし、我々は異なるプロジェクトの顧客の特定のseetingsが必要です。 (2)Workspace Mechanicsへのリンクをありがとう。私は今日それをテストします! – Tim

+1

Workspace Mechanicsは問題ありませんが、最後に、プロジェクトごとに異なる設定をすることはできませんでした。私も別のプロジェクトに異なる書式を設定する必要があります - この場合は歴史的な理由によるものです... –

+0

Workspace Mechanicsは私たちの選択肢ではありません! IDE全体のフォーマット設定を共有し、プロジェクト固有のものはもう使用しません。そのため、これは私にとって正しい答えです。 – Tim

1

私は多くの機会に私を困惑させましたが、私はあなたに完全な答えを与えることはできません。

まず、org.eclipse.core.resources.prefsファイルはありませんにはタイムスタンプが含まれています。私はorg.eclipse.jdt.ui.prefsのような、常にタイムスタンプを持つように見える他の環境設定ファイルを持っています。私の現在の設定では、決して不当に更新されることはありません。 Plugin.getPluginPreferences()を介してアクセス - -

好みのAPIのいくつかの世代

  • org.eclipse.core.runtime.PreferencesがあるのEclipse 3.0で非推奨。今シミュレート - これを使用しないでください!
  • org.eclipse.jface.preference.* - アクセス:AbstractUIPlugin.getPreferenceStore() - Eclipse 3に替わっています。1;今シミュレート - Platform.getPreferencesService()を介してアクセス - - フィールドエディタ
  • org.eclipse.core.runtime.preferences.*のために使用されるAPIの第三世代を使用してこれらの設定は、設定ファイルを読み書き、OSGiの優先サービス

に基づいて常にEclipsePreferencesを経由して発生するようです。このクラスは「正しい」ことを行い、タイムスタンプを削除します。

場合によっては - たとえば、 JDTでの書式設定の処理では、特別なorg.eclipse.jface.preference.PreferenceStoreが使用されます。このクラスは、単にタイムスタンプを書き出すだけでは正しいことをしません。

、このクラスを使用すると、それが使用されているまさにその例では、コードから非常に明確ではありません...なぜ

ことの一つは、私はこれを回避する方法を見つけることができない、しかし確かにあります!

1

これは行末に問題がありますか?あなたの特定のバージョンのEclipseの特異性?

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

私は自分が見ている振る舞いを、行末の不一致の有無にかかわらず再現できないため、私はこの問題の推測に専念しています。私はリポジトリに設定ファイルを持つ多数のEclipseプロジェクトを持っていますが、Eclipseによって望ましくない方法で自動的に変更されることはめったにありませんが、それらは常に実質的に変更されています。 Eclipse Helios SR2(設定ファイルのフォーマットに一層合っています)またはEclipse SDK 3.7.2(M20120208-0800)のいずれかでプロジェクトをインポートするだけで、設定ファイルに日付スタンプだけを変更することはできません。 Eclipseをアップグレードするだけで問題が解決するかもしれません(設定をエクスポートしてください)。

関連する問題