2011-01-27 9 views
8

Heredé un proyecto de Java en la forma de un proyecto de eclipse. Después de cambiar la configuración de Tomcat (de v6 a v7), Subclipse me impulsó a cometer los siguientes archivosDebería confirmar los archivos modificados por eclipse

  • .classpath
  • org.eclipse.core.prefs
  • org.eclipse.common.project.facet .core.refs
  • org.eclipse.common.project.facet.core.xml

Will cometer ellos ayudar a los miembros de mi equipo o va a meterse con su espacio de trabajo?

¿Cuál es el enfoque de mejores prácticas para esto?

+3

Consulte http://stackoverflow.com/questions/116121/do-you-keep-your-project-files-under-version-control/119377#119377 o http://stackoverflow.com/questions/2024307/what-should-be-committed-to-the-repository-in-the-eclipse-workspace, o (más genérico) http://stackoverflow.com/questions/1880817/what-to-put-under-version- control – VonC

+1

Wow. Traté de mirar alrededor un poco. Creo que mi pregunta puede "dividirse" en dos o tres y obtener respuestas adecuadas para cada uno de ellos. Creo que la mejor respuesta sería tu comentario :-) –

Respuesta

11

En general, debe registrarse (y comprometerse después de los cambios) todo lo que sí contribuye a la construcción Y no se puede volver a generar mediante la reconstrucción completa Y es específico de la estación de trabajo. (Las implicaciones de esta declaración dependen de su proceso/proceso de compilación, que es la intención).

Esto implica que debe excluir todo lo que se vuelve a generar después de compilación completa, etc. por lo que no se registra (y no se ofrece para registrarse).

+3

Esto también implica que todos los archivos en la pregunta se deben examinar para cosas dependientes de la estación de trabajo, como rutas de archivos y preferencias del usuario. Y si no hay nada estación de trabajo o usuario dependiente en algunos de ellos, entonces no hay nada de malo en la comisión de esos archivos en particular. Por ejemplo, .classpath puede contener rutas del sistema de archivos, pero tal vez solo contenga nombres de bibliotecas independientes de la estación de trabajo y las rutas para ellos se definen en otro lugar. –

+0

@Sergey Tachenov: Sí, y eso es lo que quise decir con "Las implicaciones de esta declaración dependen de su proceso/proceso de compilación, que es la intención". – TheBlastOne

+1

Comprobé todo y vi que los archivos eran todos independientes de la ruta. Pensé que en el Eclipse todo sería independiente de la ruta o dependiente, pero no ambos ... –

0

Lo que hemos hecho es ignorar estos archivos, ya que pueden arruinar el espacio de trabajo de otros en el proyecto.

Ignorarlos también hace que su proyecto sea más limpio, lo cual siempre me gusta.

+0

Pls proporciona una explicación cuando rechazas algo. – fmucar

+0

No lo hice downvote, sin embargo, creo que el downvoter considerado "limpiador" es demasiado vago, como podría ser el caso de "desordenar el espacio de trabajo". La situación típica de los recién nacidos: lo intentas y te dejas llevar. Continúa, @cgratgny, aprende de ello, y tu saldo de puntos explotará tarde o temprano. Simplemente no te frustres con esta curva de aprendizaje inicial, puede considerarse normal. – TheBlastOne

+0

Gracias por el comentario, @TheBlastOne. Sé que lo estaba intentando ... pero no tan elocuente como otros en las soluciones que brindan. – Chris

0

Estos archivos pueden contener rutas de acceso específicas del entorno, por lo que sugeriría no registrarlas. En mi proyecto actual, utilizamos scripts ant para crear el proyecto y realizar la comprobación inicial de todo nuestro código.

4

Es mejor no comprometer esos archivos ya que las rutas/configuraciones pueden diferir en las diferentes estaciones de trabajo.

Es posible que desee utilizar alguna herramienta de compilación para solucionar esto. (por ejemplo, Maven)

Como si alguno de los miembros del equipo no estuviera usando eclipse (usando algún otro ide), esos archivos no tienen ningún significado para ellos.

Si todo el mundo comete configuraciones IDE diferentes, imagine qué clase de desorden puede causar.

EDITAR:

Más explicaciones;

He trabajado en equipos que las personas utilizan NetBeans, Eclipse, IDEA ... durante mucho tiempo y no es realmente una opción para ellos cambiar el IDE. Solo afectará la productividad de esa persona.

Cuando las personas se acostumbran a sus IDEs aprenden shorcuts, saben dónde buscar algunas funciones (refactorizar/generar getter setter/implementar anula los métodos necesarios ...) así que si los fuerza a utilizar algún otro IDE solo hará las cosas más difíciles para ellos y más lentos para el proceso general. En mi humilde opinión y de mi experiencia con una base de código flexible siempre es bueno. Soy un tipo eclipsado y probablemente no querría trabajar con ningún otro IDE, ya que conozco muchos shorcuts que hacen las cosas más rápidas/fáciles para mí y esos shorcuts son diferentes en IDE diferentes.

Todos los archivos IDE pueden ser regenerados automáticamente por el propio IDE, probablemente con solo un par de clics.

Y mi proyecto actual tiene 3 desarrolladores, cada uno usando diferentes IDE eclipse (me), NetBeans, IDEA sin ningún problema. No quiero ver los archivos de configuración de IDEA o NetBeans que no tienen sentido para el eclipse cuando reviso el origen del repositorio. Del mismo modo para ellos también.

+0

+1 para el aspecto específico de la estación de trabajo. A cambio, me permití agregar este aspecto a mi propia respuesta. – TheBlastOne

+1

-1 ¿por quién? ¿Por qué? – TheBlastOne

+0

"¿por quién? ¿Por qué?" :) pregunta completa me hará entender cuál es la pregunta? – fmucar

4

Sí, pero asegúrese de que las rutas sean relativas en el espacio de trabajo en lugar de rutas absolutas. Tener estos archivos en el espacio de trabajo permite a los miembros de su equipo trabajar en el mismo entorno que usted. También hace que configurar un nuevo entorno de desarrollo sea mucho más fácil: simplemente lo verifica fuera del control de fuente y en Eclipse use 'Importar ...> Proyectos existentes en el área de trabajo'

Como mencionó @adamdunne, estos archivos pueden contener entornos específicos caminos. Sin embargo, si tiene cuidado de asegurarse de que las rutas sean relativas dentro de su área de trabajo, mediante el uso de variables y al no importar archivos jar externos, es decir, al incluir únicamente archivos jar de proyectos en el área de trabajo, entonces debería estar bien. En mi espacio de trabajo revisamos esos archivos y hemos tenido muchos menos problemas para configurar el desarrollo. entornos desde.

+0

+1 para indicar cómo deshacerse de los detalles de configuración específicos de la estación de trabajo. – TheBlastOne

+0

Lo hicimos ('Importar ...> Proyectos existentes en el espacio de trabajo') y esta es la razón por la que hice la pregunta en primer lugar.Actualmente, mi equipo está en modo de entrenamiento y quiero adoptar la mayor cantidad de prácticas recomendadas para el ciclo de vida del proyecto. –

1

Trabajo en un proyecto donde confirmamos el archivo .classpath ya que es muy útil que todos los desarrolladores utilicen el mismo :) Si solo usa dependencias dentro de su área de trabajo, este archivo usa rutas relativas y por lo tanto debería ser igual en todos máquinas. Aunque este archivo no sea necesario para compilar (con hormiga, por ejemplo), es muy conveniente sincronizarlo.

En contraste los org.eclipse.core.prefs tiendas (que yo sepa) proyecto específico, pero personales preferencias de los desarrolladores, que no me registrarnos.

Con las facetas Google No trabajo todavía en un proyecto real, entonces no puedo decirlo. Pero, en general, creo que depende de la información en el archivo y de la forma en que trabaja.

Si no está seguro, inténtelo. Si obtienes conflictos en estos archivos todo el día, esto es una pista que puede que no estés en la forma perfecta.

+1

>> Si no está seguro, inténtelo. << Y que el resto del equipo disfrute esa experiencia de inmediato, también, jejeje. Si obtienes conflictos en estos archivos todo el día, es una pista de que el resto del equipo también los recibe, y bombardeaste con éxito la compilación :) – TheBlastOne

+0

>> Si obtienes conflictos en estos archivos todo el día, esto es una pista de que puede que no esté en la forma perfecta. << Duke Nukem diría: "Hehehehehe, qué desastre". :) – TheBlastOne

+0

org.eclipse.core.prefs almacena cosas como las versiones de origen y destino del compilador de Java y las configuraciones de advertencia/error, que en realidad consideraría bastante útiles para que los desarrolladores no decidan por sí mismos. –

1

Estos archivos pueden ser muy útiles para compartir configuraciones entre desarrolladores. La alternativa es usar Maven (que es una gran tarea para un proyecto establecido) o tener instrucciones paso a paso constantemente desactualizadas y nuevos desarrolladores que tardan medio día hasta que puedan construir el proyecto.

Sin embargo, debe asegurarse de que estas configuraciones sean portátiles, es decir, que no contengan rutas de acceso locales. Esto se puede hacer mediante el uso de rutas relativas dentro del espacio de trabajo, variables de ruta de eclipse y bibliotecas de usuario.

+0

También lo escribí en un comentario diferente, creía que el eclipse tenía todas las rutas relativas o absolutas pero no ambas. Esta es la razón principal por la que publiqué esta pregunta. En base a esto y consejos similares comencé a revisar cada archivo y vi lo que estaba pasando en cada uno de ellos. Muchas gracias. –

+0

@dimitris: Definitivamente es posible tener ambos. Por ejemplo, al agregar un JAR a la ruta de compilación del proyecto (que da como resultado una entrada en el archivo .classpath), tiene las opciones "Agregar JAR", que le permite elegir un archivo dentro del espacio de trabajo y genera una ruta relativa, y "Agregar JAR externos", que le permite elegir cualquier archivo y genera una ruta absoluta. –

4

Como regla general, debe evitar la asignación de archivos que contengan preferencias del usuario y detalles del proyecto que ese Eclipse y/o sus complementos puedan regenerarse.

Pero en algunos casos las cosas son un poco turbias. Por ejemplo, el archivo .classpath puede ser ser la fuente principal de la ruta de compilación de Eclipse; p.ej. si tiene archivos JAR en el árbol de proyectos en lugar de utilizar Maven. (Con Maven, el complemento m2eclipse genera el archivo .classpath a partir de la información de dependencia en el archivo POM y, por lo tanto, el archivo no debe registrarse).

Además, algunas de las facetas están en el límite. Por ejemplo, en proyectos con JSPs y Javascripts, he encontrado que es esencial cambiar las propiedades de las facetas para desactivar los validators rotos. Y hay un buen caso para tratar esos cambios como parte del proyecto y no como preferencias personales.

La separación de las preferencias de grupo/proyecto de las preferencias personales es un área donde (IMO) Eclipse es seriamente deficiente.

+0

¿Son otros IDEs mejores, y si es así, cómo? Creo que eclipse es regular: es genial tener las configuraciones esenciales del proyecto como archivos de texto dentro del directorio del proyecto. No es tan bueno tenerlos distribuidos en varios archivos en varios formatos. –

+0

@Michael - * "Son otros IDEs mejores" * - en serio, no lo sé. Y es probablemente una de esas cosas que es demasiado difícil/demasiado tarde para solucionarlo. –

Cuestiones relacionadas