2012-04-24 8 views
7

Mam przestrzeń roboczą Eclipse z wieloma (> 50) pakietami. Niektóre pakiety zawierają specjalne ustawienia projektu, np. Specyficzne dla klienta formatowanie kodu.Eclipse zmienia ustawienia projektu timestamp comment after checkout

Jeśli skonfiguruję nowy obszar roboczy i zrealizuję istniejący projekt z formatowaniem kodu specyficznym dla klienta, Eclipse zmieni automatycznie komentarz daty z org.eclipse.jdt.ui.prefs na aktualną datę!

Jest to plik preferencji (org.eclipse.jdt.ui.prefs) w SVN:

#Tue Apr 24 09:15:20 CEST 2012 
eclipse.preferences.version=1 
formatter_profile=_myProfile 
formatter_settings_version=12 

Jest to plik (org.eclipse.jdt.ui.prefs) po kasie:

#Tue Apr 24 09:30:25 CEST 2012 
eclipse.preferences.version=1 
formatter_profile=_myProfile 
formatter_settings_version=12 

To samo dzieje się z ustawieniami org.eclipse.core.resources.prefs złożyć jeśli ustawić kodowanie do UTF-8 dla całego projektu.

SVN:

#Tue Apr 24 09:26:48 CEST 2012 
eclipse.preferences.version=1 
encoding/<project>=UTF-8 

Po kasie:

#Tue Apr 24 09:28:00 CEST 2012 
eclipse.preferences.version=1 
encoding/<project>=UTF-8 

Jeśli projekt zawiera zarówno pliki i ustawienia (org.eclipse.core.resources.prefsorg.eclipse.jdt.ui.prefs) tylko plik org.eclipse.core.resources.prefs ustawienie zostanie zmienione!

Czy ktoś zna dlaczego Eclipse zmienia tę linię i jak mogę tego uniknąć?

+2

Bardzo interesujące pytanie. Nie mam odpowiedzi, ale jeden komentarz: wygodnie jest przechowywać ustawienia Eclipse w subwersji, ale czasami cię gryzie. Subversion jest w stanie przechowywać tylko pełne pliki, a konfiguracja Eclipse to część konfiguracji, część generowana lub buforowana. – mliebelt

+0

** Dlaczego ** Eclipse zmienia datę: jest to standardowy format pliku '.properties' obsługiwany przez [java.util.Properties] (http://docs.oracle.com/javase/6/docs/api /java/util/Properties.html). Zawiera datę utworzenia pliku. –

Odpowiedz

6

NIE przechowuj ustawień zaćmienia w podmianie !!! To nie pozwala na posiadanie różnych ustawień lub różnych wersji Eclipse. To będzie prawdziwy problem, jeśli masz inne środowisko.

Jeśli chcesz zachować zsynchronizowane ustawienia obszaru roboczego, rozważ skorzystanie z opcji podobnej do Workspace Mechanics.

Jeśli to tylko w celu udostępnienia ustawień formatu, wyeksportuj je jako plik XML i zapisz plik XML w repozytorium. Każdy program rozwijający może zaimportować plik XML.

+0

Dziękuję za odpowiedź, ale - (1) ogólnie mamy standardowe zaćmienie programisty. Wszyscy programiści mają tę samą wersję! Potrzebujemy jednak różnych selekcji klientów związanych z konkretnymi projektami. (2) Dzięki za link do Workspace Mechanics. Sprawdzę to dzisiaj! – Tim

+1

Mechanika przestrzeni roboczej jest w porządku ... ale na koniec sprawdziłem, czy nie można mieć innych ustawień dla różnych projektów. Ja również muszę mieć różne formatowanie dla różnych projektów - choć w tym przypadku jest to spowodowane przyczynami historycznymi ... –

+0

Mechanizm miejsca pracy nie jest dla nas opcją! Zaczniemy udostępniać nasze ustawienia formatu dla całego IDE, a nie dla konkretnego projektu! Z tego powodu jest to dla mnie właściwa odpowiedź! – Tim

1

Zaskoczyło mnie to również przy wielu okazjach, ale nie jestem pewien, czy mogę udzielić ci pełnej odpowiedzi.

Po pierwsze, moje org.eclipse.core.resources.prefs pliki nigdy zawierają znacznik czasu! Mam inne pliki preferencji - takie jak org.eclipse.jdt.ui.prefs - które zawsze wydają się mieć znacznik czasu. W moim obecnym ustawieniu nigdy nie wydają się nadmiernie aktualizowane.

Istnieje kilka pokoleń API preferencji

  • org.eclipse.core.runtime.Preferences - dostępne za pośrednictwem Plugin.getPluginPreferences() - Przestarzałe w Eclipse 3.0; teraz symulowane - nie używaj tego!
  • org.eclipse.jface.preference.* - Dostęp przez AbstractUIPlugin.getPreferenceStore() - Zastąpiono w Eclipse 3.1; teraz symulowany - Służy do redakcji terenowych
  • org.eclipse.core.runtime.preferences.* - Accessed poprzez Platform.getPreferencesService() - Na podstawie serwisu preferencji OSGi

te preferencje, które wykorzystują trzecią generację API, czytania i pisania plików preferencji wydaje się zawsze zdarzyć poprzez EclipsePreferences . Ta klasa robi "właściwą" rzecz i usuwa znacznik czasu.

W niektórych przypadkach - np. w obsłudze formatowania w JDT - używany jest specjalny org.eclipse.jface.preference.PreferenceStore. Ta klasa nie robi tego, co należy, po prostu wypisując znacznik czasu.

Dlaczego ta klasa jest używany i dokładnie przypadki, w których jest on stosowany, nie jest bardzo jasne z kodu ...

Jedno jest pewne, choć nie mogę znaleźć sposób, aby tego uniknąć!

1

Czy to może być problem z zakończeniami linii? Osobliwość twojej konkretnej wersji Eclipse?

Mogę sobie wyobrazić, że Eclipse przepisuje pliki ustawień bez widocznej istotnej zmiany, jeśli znak EOL użyty dla pliku w SVN nie jest zgodny z domyślnym na maszynie używanej do programowania. W takim przypadku problem powinien występować tylko podczas przełączania komputerów. Poprawka polegałaby na dodaniu do plików powodujących problemy właściwości svn:eol-style = .

Ograniczam się do spekulacji na temat problemu, ponieważ nie mogę odtworzyć zachowań, które widzisz, z niedopasowanymi zakończeniami linii lub bez nich. Mam wiele projektów Eclipse z plikami konfiguracyjnymi w repozytorium i chociaż nie są one rzadko zmieniane automatycznie przez Eclipse w niepożądany sposób, są one zawsze merytorycznie zmienione. Nie mogę uzyskać żadnych plików ustawień, aby zmienić tylko ich datownik tylko poprzez importowanie ich projektu na Eclipse Helios SR2 (który lepiej pasuje do formatu plików ustawień) lub Eclipse SDK 3.7.2 (M20120208-0800). Może tylko uaktualnienie Eclipse rozwiąże problem (koniecznie wyeksportuj swoje ustawienia!).

Powiązane problemy