¿Es mejor mantener el repositorio Git dentro o fuera del espacio de trabajo de Eclipse?


Soy un usuario típico de Eclipse/Subversion que comienza la migración a Git. He investigado los conceptos básicos de git y he decidido atenerme al enfoque de un proyecto por repositorio inicialmente para mantener las cosas simples. Sin embargo, todavía tengo problemas para decidir dónde colocar el repositorio para cada proyecto.

He pasado mucho tiempo revisando las respuestas a esta pregunta , aunque creo que el autor de esa pregunta estaba asumiendo que solo se puede usar Eclipse para administre el repositorio si el repositorio se encuentra dentro del espacio de trabajo de Eclipse, lo cual, por supuesto, no es cierto.

Lo que más me llamó la atención sobre esa pregunta, sin embargo, fue el hecho de que todas las respuestas excepto una (incluida la respuesta aceptada) sugirieron mantener el repositorio dentro del espacio de trabajo de Eclipse, mientras que solo una respuesta señaló que la Guía del Usuario de EGit recomienda exactamente lo contrario.

En la práctica, sin embargo, parece que hay una serie de enfoques implementados por Eclipse / EGit, algunos de los cuales parecen contradecir las recomendaciones de EGit.

Por ejemplo, si usa el Asistente para Nuevo Proyecto para crear un Nuevo Proyecto PHP desde Git y el repositorio es remoto, Eclipse/EGit creará felizmente una carpeta de proyecto en el espacio de trabajo de Eclipse y pondrá el repositorio (.git) en la carpeta del proyecto. Este es el resultado final que realmente quiero, ya que mantiene todo encapsulado dentro del espacio de trabajo de Eclipse.

Sin Embargo, si utiliza el Nuevo Asistente de Proyecto y seleccione un repositorio Git que sea local, Eclipse / EGit no clona el repositorio como lo hace para los repositorios remotos. En su lugar utiliza la copia de trabajo de ese repositorio como la ubicación del proyecto, crea su .proyecto y otras cosas meta en esa ubicación y también crea una nueva carpeta (aparentemente innecesaria) dentro de esa copia de trabajo con el mismo nombre que su proyecto (por lo que termina con, por ejemplo, ~/git/blah/blah). Si borra esa carpeta superflua, terminará con un estructura que es idéntica al primer ejemplo, la única diferencia es que la carpeta del proyecto no es una subcarpeta de la carpeta del espacio de trabajo de Eclipse, sino que está en otro lugar de su sistema de archivos (p. ej. ~/git/blah). Lo único positivo que parece tener este enfoque es que se adhiere a las recomendaciones de la Guía del Usuario de EGit, pero desde una perspectiva técnica, es difícil ver cómo esto es realmente tan diferente al primer ejemplo.

Dadas estas observaciones desconcertantes, estoy preguntándose qué tipo de experiencias han tenido las personas usando cada uno de estos enfoques y cuáles podrían ser las trampas si uno ignora las recomendaciones en la Guía del Usuario de EGit.

Author: Community, 2012-05-10

3 answers

Las implicaciones de ambas soluciones se enumeran directamente en la guía del usuario que vinculó. Puedo decirte que la parte

Esto puede dar lugar a problemas de rendimiento

Es desafortunadamente muy cierto. Por lo tanto, si tienes un directorio git con una gran cantidad de archivos dentro de tu espacio de trabajo, muchas operaciones de git comenzarán con un "conteo de objetos"..."diálogo que bloquea su IDE porque escanea todos los archivos en el espacio de trabajo. Para mis 20000 archivos actuales esto significa esperar de 10 a 20 segundos por cada commit, cada interruptor, ...

En las actividades de tiempo libre, donde afortunadamente puedo usar la otra alternativa (tener el directorio de trabajo de git fuera del espacio de trabajo) todo se siente mucho más ágil y es divertido fusionar y cambiar.

Así que si optas por proyectos grandes, considera el directorio git fuera del workspace como primera opción.

 19
Author: Bananeweizen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-10 10:36:20

¿Por qué no permitir las 2 posibilidades?

Estoy bien para el caso de un gran proyecto que genera muchos archivos en el .carpeta de metadatos. Incluso si es bastante simple de poner el .línea de metadatos en el .gitignore con el fin de mejorar las actuaciones.

Pero en mi caso (desarrollo Android), tengo alrededor de 35 proyectos diferentes que contienen solo 50 archivos.

Todos estos proyectos están en diferentes worspaces que contienen el proyecto de la aplicación y los proyectos de bibliotecas para esta aplicación. (Una repositorio con submódulos por aplicación)

  • Debo tener solo un espacio de trabajo con todos mis proyectos dentro (pasar tiempo para desplazarse/cerrar / abrir proyectos en el explorador de paquetes)?

  • Debo administrar 2 carpetas base diferentes (Proyectos y Worskspaces) con la última conteniendo solo la .metadatas carpetas de todos mis proyectos ?

Para mí esto no tiene sentido.

Mensaje al equipo EGit:

¿Por qué cambiar la forma en que los desarrolladores normalmente organizan sus carpetas de proyectos:

- - - - Worspace

- - - - Worspace / .metada

-----Worspace/.git

-----Espacio de trabajo / Proyecto1

-----Worspace / LibraryProject1

-----Worspace / LibraryProject2

Entiendo la razón de rendimiento, pero solo para el 5% de los desarrolladores con proyectos muy grandes (generando grandes .metadatos) simplemente no nos permite estructurar nuestros proyectos como Eclipse nos dice que hagamos desde hace años.

¿Podrías simplemente, incluso si un mensaje nos advierte que no se recomienda, no bloquee el proceso de clonación en la carpeta worspace ("C:\Worspaces\ no es un directorio vacío")

EGit es una gran herramienta, pero realmente estoy pensando en usar el Bash way debido a esto
limitacion.

Gracias por su respuesta

PD : Hay muchos casos diferentes de desarrollo bajo Eclipse. Si es solo un problema de rendimiento y si no hace que EGit se bloquee, por favor, solo avísenos sobre ello, pero no nos bloquee caso de pequeños proyectos.

 5
Author: user2216548,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-27 16:30:01

Estoy haciendo la misma migración que el póster original y he encontrado otro hilo donde se expresan las mismas dudas sobre la recomendación de Egit: ¿Debo almacenar el repositorio git en el espacio de trabajo Home o Eclipse?

@ JamesG ¿Así que este es tu diseño?

~/projectA/workspace/.metadata
~/projectA/workspace/subproj1/.project
~/projectA/workspace/subproj2/.project
~/projectA/subproj1/.git
~/projectA/subproj1/file1
~/projectA/subproj2/.git
~/projectA/subproj1/file2
 3
Author: Michel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:53:52