2012-04-24 66 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 

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

非常有趣的問題。我沒有答案,但有一點評論:將Eclipse的設置存儲在subversion中很方便,但有時候它會咬你。 Subversion只能存儲完整的文件,Eclipse的配置是部分配置,部分生成或緩存。 – mliebelt 2012-04-24 08:46:55

+0

至於爲什麼** **的Eclipse改變日期:這是由[java.util.Properties]處理的標準'.properties'文件格式(http://docs.oracle.com/javase/6/docs/api /java/util/Properties.html)。它包括文件寫入的日期。 – 2012-05-02 15:11:01

回答

6

不要將您的eclipse設置存儲在顛覆! 它不允許你有不同的設置或不同的eclipse版本。 如果你有不同的環境,這將是一個真正的痛苦。

如果要保持工作區設置同步,請考慮使用類似Workspace Mechanics的內容。

如果這只是爲了共享格式設置,請將它們導出爲XML並將XML文件存儲在存儲庫中。每個開發者都可以導入XML文件。

+0

感謝您的回答,但 - (1)通常我們有一個標準的開發者eclipse。所有開發者都有相同的版本!但是我們需要針對不同客戶的具體問題。 (2)感謝您與Workspace Mechanics的鏈接。我今天會測試它! – Tim 2012-05-02 07:15:27

+1

Workspace Mechanics很好......但是最後我檢查了你可能不會爲不同的項目設置不同的設置。我也需要針對不同的項目使用不同的格式 - 但在這種情況下,這是由於歷史原因造成的...... – 2012-05-02 15:32:22

+0

工作區機械不適合我們!我們將開始共享我們的整個IDE的格式設置,而不再是項目特定的!因此,這對我來說實際上是正確的答案! – Tim 2012-05-03 11:45:08

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。這個課程並沒有做正確的事情,只是寫出時間戳。

爲什麼這個類是用來,準確地在何種情況下使用它,是不是從代碼很清楚......

有一件事是肯定的,雖然,我不能找到一種方法來避免這種情況!

1

難道這是行尾有問題?您特定版本的Eclipse的特性?

我能想象的Eclipse改寫設置文件沒有任何明顯的實質性的改變,如果用於SVN文件的EOL字符不匹配用於開發機器上的默認值。不過,在這種情況下,切換機器時只能看到問題。解決方法是將svn:eol-style = native屬性添加到有問題的文件。

我自己侷限在炒作這個問題,因爲我不能複製你看到的,有或無錯配的行結尾的行爲。我有很多帶有配置文件的Eclipse項目,雖然它們不常被Eclipse以不合意的方式自動更改,但它們總是會進行實質性更改。我無法獲取任何設置文件,只通過將其項目導入到Eclipse Helios SR2(更好地匹配設置文件的格式)或Eclipse SDK 3.7.2(M20120208-0800)中來更改其日期戳。也許只是升級Eclipse會解決問題(確保導出您的設置!)。