2010-11-25 6 views
36

Tenemos el código para una aplicación Eclipse RCP en un área de trabajo de Eclipse que contiene múltiples proyectos de Java. Estamos utilizando Mercurial con un simple .hgignore just * .class (pero el mismo problema pertenece a Git).¿Qué pasa con los metadatos del proyecto Eclipse que puedo ignorar de forma segura en Git/Mercurial?

Incluso un pequeño cambio en el código puede hacer que muchos de los archivos en .metadata cambien.

Me gustaría excluir algunos o todos los .metadata del control de versiones. Si lo excluimos por completo, el espacio de trabajo se pierde.

¿Alguien sabe lo que podemos excluir con seguridad? De forma alternativa, ¿cómo podemos recrearlo si lo llevamos a una nueva computadora?

+0

¿Tengo entendido que está almacenando todo el espacio de trabajo de Eclipse en un único depósito de Mercurial? ¿Ha considerado almacenar cada proyecto en un repositorio, y luego agrupándolos como subrepositorios de un repositorio paraguas para que pueda versionarlos juntos (aunque no sé si Eclipse tiene algún soporte para eso)? –

+0

Es un producto basado en complementos, y cada uno de los proyectos define el complemento. Todos son necesarios juntos o el producto en general. Entonces, los proyectos individuales son solo una parte del todo, y es por eso que deseamos almacenar todo el espacio de trabajo de Eclipse en un único repositorio. –

Respuesta

15

Los archivos Personalmente estoy en cuenta son:

  • version.ini (no muy emocionante)
  • .plugins/org.eclipse.jdt.core/variablesAndContainers.dat (variables de ruta de clases)
  • .plugins/org.eclipse.core.resources/.projects/* /. ubicación (proyectos en el área de trabajo)

en algún lugar, tengo un espacio de trabajo de Eclipse utilizado para probar algunas herramientas relacionadas con Eclipse, que es bastante severamente cortado, b ut funciona Veré si puedo desenterrarlo.

+1

¡Gracias! Eso funcionó. También tuve que mantener .metadata \ .plugins \ org.eclipse.core.resources \ .root y .safetable. –

+0

Tuve que agregar .metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat también. –

4

Los metadatos del espacio de trabajo no deberían mantenerse en control de fuente. La configuración básica del espacio de trabajo se puede compartir a través de team project set.

+0

Gracias, parece prometedor. Lo intentaré. –

+0

Un archivo de conjunto de proyectos incluye qué proyectos se deben verificar y de dónde, pero nada más. No es que esté en desacuerdo contigo, creo que la forma más prudente de trabajar es verificar el código y los metadatos por proyecto, y dejar los espacios de trabajo bajo control local, pero si el OP insiste en compartir la configuración del espacio de trabajo, probablemente lo haga. necesita más que una PSF. –

+0

Tom es correcto; eso no funcionó para mí El PSF contiene referencias a (un repositorio de CVS mal configurado y no existente), al cual no me puedo conectar, por supuesto. –

4

De forma rutinaria mantengo .project y .classpath, no solo son seguros para git pero también son útiles.

.class y .settings están en mi gitignore. Esos son generados y específicos de la persona respectivamente.

+1

Parece que tiene razón con esta afirmación, pero me pregunto por qué el archivo ignorar github eclipse todavía contiene .project y .classpath – lanoxx

+0

El eclipse github ignorar no contiene .project (a partir de ahora, al menos), solo .cproject. –

50

GitHub es el mantenimiento de un proyecto comunitario "gitignore" que los catálogos sugirieron retoques de los ignorados para diversas plataformas, los editores y los idiomas: Ignora https://github.com/github/gitignore

Eclipse están aquí: https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore

(si hay otros retoques que se deben saber sobre, hacerles saber!)

+6

¡Un excelente proyecto! Sin embargo, esa lista de ignorar particular tiene dos problemas: una es que ignora algunas cosas que definitivamente desea verificar, como .classpath, y la otra es que se trata de cosas dentro de los directorios del proyecto, mientras que el OP desea verificar una espacio de trabajo completo Si aplicara esa lista a un área de trabajo, (creo) ignoraría todo el directorio .metadata, lo que perdería algunas cosas bastante importantes, como los archivos de ubicación del proyecto. Realmente, sin embargo, el problema aquí es Eclipse, que mezcla archivos autorizados y derivados de una manera muy poco útil. –

29

metadatos y espacio de trabajo

I que está Nunca comparto la carpeta .metadata. De hecho, a menos que tenga un motivo en particular, ni siquiera compartiría la carpeta del espacio de trabajo, sino que compartiría cada proyecto por separado con git. De esa manera la carpeta .metadata siempre estará en la carpeta principal de su repositorio Git y usted no tiene que pensar si lo que necesita hacer caso omiso de todos modos:

|-- workspace/ 
| \-- .metadata/ 
| |-- yourProjectOne/ 
| | \-- .git/ 
| | |-- .project 
| | |-- src/ 
| | |-- ... 
| |-- yourProjectTwo/ 
| | \-- .git/ 
| | |-- .project/ 
| | |-- src/ 
| | |-- ... 

proyecto específico

probablemente debería siempre comparta el archivo .project y nunca .settings/. El .classpath puede depender de su entorno pero tampoco le sugiero que lo comparta, ya que puede causar conflictos (por ejemplo, si un usuario usa openjdk y el otro usa sun-jdk.El .settings contiene preferencias y configuraciones para eclipse y cambia mucho, por lo tanto, no se debe compartir. Si importa correctamente el proyecto después de haberlo clonado desde git, tampoco tendrá ningún problema.

Los eclipse documentation indica lo siguiente acerca del archivo .project:

La finalidad de este fichero es hacer que el proyecto de auto-descripción, por lo que un proyecto que se subió la cremallera o se libera a un servidor puede ser correctamente recreado en otro espacio de trabajo.

y:

Si se crea un nuevo proyecto en una ubicación que contiene un archivo de descripción proyecto existente, el contenido de ese archivo de descripción se ser honrados como la descripción del proyecto. Una excepción es que el nombre del proyecto en el archivo se ignorará si no coincide con el nombre del proyecto que se está creando. Si el archivo de descripción en el disco es inválido, la creación del proyecto fallará.

También se sugiere utilizar Maven ya que esto le ahorrará un montón de problemas con la gestión de la dependencia y .classpath

Maven

La principal diferencia con un proyecto Maven es que pueda importar el proyecto como Maven -> "Proyectos Maven existentes" y, por lo tanto, solo es necesario compartir el archivo pom.xml y .project en git. Eclipse creará automáticamente los archivos .classpath, .settings/ automáticamente. Por lo tanto, obviamente no necesitas compartirlos. Si algo cambia en pom.xml, simplemente ejecuta Maven -> "Actualizar configuración del proyecto" y Maven -> "Actualizar dependencias".

Sin Maven

Usted debe compartir el archivo .project y no la carpeta .settings/. Puede considerar compartir .classpath, pero puede generar conflictos tal como se explicó anteriormente. Yo sugeriría no compartirlo tampoco. Utilice el método siguiente para importar el proyecto:

Después de haber clonado el repositorio git puede simplemente usar Importación -> Eclipse "Proyecto existente de espacios de trabajo" honrará el archivo .project pero recrea los archivos .classpath y .settings/. Después de la importación, deberá configurar el classpath a mano desde Eclipse (y cada vez que su equipo quiera usar otra biblioteca).

Si no comparte el archivo .project, no es posible importar el proyecto con Eclipse. Primero tendrá que crear un nuevo proyecto con el asistente del proyecto, y luego puede elegir importar "General-> Sistema de archivos", esto copiará todos los archivos en su espacio de trabajo. Esto probablemente no es lo que quieres, porque significa que no puedes clonar el repositorio de git en el espacio de trabajo, debes clonarlo en otro lugar y luego importarlo desde allí. Por lo tanto, siempre debe compartir el archivo .project.

Por favor, deje un comentario si tiene sugerencias para esta explicación o si no está de acuerdo con ella. Espero que esto ayude a uno u otro.

+0

Con maven y m2e, ¿es necesario compartir el proyecto.? – pioto

+1

Instrucción muy útil. Estaba confundido por qué todos los archivos de gitignore incluyen .project. Pero después de su instrucción, decido compartir .project. – einverne

Cuestiones relacionadas