2012-04-24 31 views
7

Tengo un espacio de trabajo de Eclipse con muchos (> 50) paquetes. Algunos paquetes contienen configuraciones de proyectos especiales para, por ejemplo, el formato de código específico del cliente.Eclipse cambia la configuración del proyecto, marca de tiempo, comentario después de finalizar la compra

Si configuro un nuevo espacio de trabajo y pago y envío un proyecto existente con un formato de código específico del cliente, ¡Eclipse cambia el comentario de fecha en org.eclipse.jdt.ui.prefs a la fecha actual automáticamente!

Este es el archivo de preferencias (org.eclipse.jdt.ui.prefs) en SVN:

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

Este es el archivo (org.eclipse.jdt.ui.prefs) después de la salida:

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

Lo mismo sucede con los ajustes org.eclipse.core.resources.prefs el archivo si fijo la codificación a UTF-8 para todo el proyecto.

SVN:

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

después de la salida:

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

Si un proyecto contiene dos archivos de configuración (org.eclipse.core.resources.prefs y org.eclipse.jdt.ui.prefs) sólo el archivo org.eclipse.core.resources.prefs configuración cambiará!

¿Alguien sabe por qué Eclipse cambia esta línea y cómo puedo evitarla?

+2

Pregunta muy interesante. No tengo una respuesta, pero un comentario: es conveniente almacenar la configuración de Eclipse en subversión, pero a veces te muerde. Subversion solo puede almacenar archivos completos, y la configuración de Eclipse es una configuración de parte, parte generada o almacenada en caché. – mliebelt

+0

En cuanto a ** why ** Eclipse cambia la fecha: este es el formato de archivo '.properties' estándar manejado por [java.util.Properties] (http://docs.oracle.com/javase/6/docs/api /java/util/Properties.html). Incluye la fecha en que se escribió el archivo. –

Respuesta

6

¡¡¡NO almacene su configuración de eclipse en subversiones !!! No le permite tener configuraciones diferentes o versiones de eclipse diferentes. Va a ser un verdadero dolor si tiene diferentes entornos.

Considere usar algo como Workspace Mechanics si desea mantener la configuración de su espacio de trabajo sincronizada.

Si esto es solo para compartir su configuración de formato, expórtela como XML y almacene el archivo XML en su repositorio. Cada desarrollador podría importar el archivo XML.

+0

Gracias por su respuesta, pero - (1) en general, tenemos un eclipse de desarrollador estándar. Todos los desarrolladores tienen la misma versión! Pero necesitamos diferentes proyectos para clientes específicos. (2) Gracias por el enlace a Workspace Mechanics. ¡Lo probaré hoy! – Tim

+1

La mecánica de espacio de trabajo está bien ... pero la última vez que lo revisé, no podía tener configuraciones diferentes para diferentes proyectos. También necesito tener un formato diferente para diferentes proyectos, aunque en este caso se debe a razones históricas ... –

+0

¡La mecánica de espacio de trabajo no es una opción para nosotros! ¡Comenzaremos a compartir nuestras configuraciones de formato para todo el IDE y ya no será un proyecto específico! Por eso, ¡esta es la respuesta correcta para mí! – Tim

1

Me ha extrañado también en varias ocasiones, pero no estoy tan seguro de poder darle una respuesta completa.

En primer lugar, mis org.eclipse.core.resources.prefs archivos nunca incluyen una marca de tiempo! Tengo otros archivos de preferencias, como org.eclipse.jdt.ui.prefs, que siempre parecen tener la marca de tiempo. En mi configuración actual, nunca parecen estar excesivamente actualizados.

Hay varias generaciones de las API de preferencias

  • org.eclipse.core.runtime.Preferences - accede a través de Plugin.getPluginPreferences() - desuso en Eclipse 3.0; ahora simulado - ¡No use esto!
  • org.eclipse.jface.preference.* - Obtenido vía AbstractUIPlugin.getPreferenceStore() - Reemplazada en Eclipse 3.1; Ahora simulado - Se utiliza para editores de campo
  • org.eclipse.core.runtime.preferences.* - Se accede a través Platform.getPreferencesService() - Basado en un servicio preferente OSGi

Esas preferencias que utilizan la tercera generación de la API, leer y escribir archivos de preferencias parece suceder siempre a través de EclipsePreferences . Esta clase hace lo "correcto" y elimina la marca de tiempo.

En algunos casos, p. al manejar el formateo en JDT, se usa un org.eclipse.jface.preference.PreferenceStore especial. Esta clase no hace lo correcto ya que simplemente escribe la marca de tiempo.

Por qué se usa esta clase y exactamente en qué casos se usa, no está muy claro a partir del código ...

Una cosa es segura, sin embargo, no puedo encontrar una manera de evitar esto!

1

¿Podría ser esto un problema con los finales de línea? ¿Una peculiaridad de tu versión particular de Eclipse?

Me imagino Eclipse reescribiendo los archivos de configuración sin ningún cambio sustancial aparente si el carácter EOL utilizado para el archivo en SVN no coincidía con el predeterminado en la máquina utilizada para el desarrollo. Sin embargo, en ese caso, solo debería ver el problema al cambiar de máquina. La solución sería agregar una propiedad svn:eol-style = native a los archivos problemáticos.

Me limito a la especulación sobre el problema porque no puedo reproducir el comportamiento que está viendo, con o sin terminaciones de línea no coincidentes. Tengo numerosos proyectos de Eclipse con archivos de configuración en el repositorio y aunque Eclipse no los cambia de manera automática con poca frecuencia de forma indeseable, siempre se modifican sustancialmente. No puedo obtener ningún archivo de configuración para cambiar solo su fecha simplemente importando su proyecto en Eclipse Helios SR2 (que mejor se ajusta al formato de sus archivos de configuración) o Eclipse SDK 3.7.2 (M20120208-0800). Tal vez simplemente actualizar Eclipse resolvería el problema (¡asegúrese de exportar su configuración!).

Cuestiones relacionadas