2012-04-21 10 views
6

Estoy utilizando EGit en un conjunto bastante grande y complejo de proyectos de Java (más de un millón de líneas de código) y una década de historia.
Aquí me encuentro con serios problemas de rendimiento con EGit, ya que incluso un pequeño cambio de línea en el archivo Java causa que EGit vuelva a indexar durante unos minutos, lo que está ralentizando todo el sistema. De hecho, incluso la línea de comandos de git es lenta ya que el "estado de git" tarda alrededor de un minuto desde la línea de comandos, pero puedo vivir con este problema de rendimiento, & EGit problema de lentitud de diálogo de confirmación (link). Como puedo usar la línea de comandos de git para confirmar y actualizar, pero no quiero sacrificar mi rendimiento de Eclipse ya que eso afecta la productividad.Sugerencias sobre la optimización de EGit en Eclipse

Lo siguiente es lo que he tratado de hacer googlear y pidiendo a la gente en torno a:

  1. Agregado carpeta de todas las clases en el archivo de exclusión. De hecho, intenté poner las clases folderin .gitignore también por el momento.
  2. Dio a Egit el tiempo suficiente para finalizar la indexación manteniendo la máquina encendida durante un día.
  3. La transición de Git, el historial y todas las demás vistas de Eclipses se cierran en el entorno de trabajo de Eclipse mientras se desarrolla.
  4. Hice "git gc" - Se hizo una diferencia en el rendimiento de la línea de comandos, pero apenas hay diferencia para EGit.
  5. Desmarcado Decorador de etiquetas para Git. Preferencias -> General -> Apariencia -> Decoraciones de etiqueta.
  6. Se eliminó el cygwin de la ruta, como se leyó en algún lugar del foro que JGit podría estar utilizando cygwin para la conversión de ruta.
  7. Caché de ventana incrementada de 10 a 70 m en Eclipse (Preferencias -> Equipo -> Git -> caché de ventana).

PD: El repositorio de Git apunta al repositorio svn remote. Además, soy git novato, así que podría haber cometido algún error en la configuración, así que no dude en señalar algo.

Aquí está la información de mi sistema, no tengo muchas especificaciones de hardware de lujo, pero algo de RAM de sobra (8GB).

  • versión git-gui 0,16 GITGUID
  • versión git: 1.7.10.mysysgit.1
  • JDK 1.6_025
  • Eclipse versión: La versión 3.7.2 de Java EE con parámetros -Xms1536m -Xmx1536m
  • EGit: 1.3.0.201202151440
  • Windows 7 Procesador: Core 2 Duo de 2,6 GHz

Respuesta

0

Esa es la problema entre CVCS (VCS centralizado) y DVCS (distribuido) VCS:

  • Un repositorio SVN puede contener GB de datos.
  • a Git repo debe mantenerse pequeño, y aprovechar submodules para representar, a través de múltiples repositorios Git.

Sospecho que muchos repos podrían funcionar mejor que un Git repo gigante. De lo contrario, los problemas de sincronización comienzan a suceder, como en bug 323839.

Pero eso significa administrar la sincronización (simplificada) entre los repositorios Git y el repositorio SVN manualmente, a través de un espacio de trabajo SVN desde el que está copiando a sus repositoriosGit, o al que está copiando reposiciones nuevas de Git a la Espacio de trabajo SVN para confirmar.

+1

VonC - De acuerdo, pero hay un problema con la implementación de Egit, ya que el mismo gran repositorio git funciona bastante bien en Linux con IntelliJ), aunque acepto que los sistemas de archivos Linux son mucho más rápidos. Entonces, ¿puedo crear un repositorio central de Git que sea clon de SVN, y luego tener un pequeño repo de Git pequeño del repo de Git central gigante? – Hemant

+0

@Hemant no, no se puede (no con la posibilidad de comprometerse con el repositorio SVN). Puede definir un repositorio Git que declare todos los pequeños como submódulos, pero no habrá ningún enlace con un repositorio SVN. Eso deja un mecanismo de sincronización manual. – VonC

+0

Vonc - Gracias por aclararlo. Seguiré explorando mis opciones ... también espero que el equipo de Egit haga algo de ajuste de rendimiento más rápido. – Hemant

3

Probablemente este no sea su problema, pero esta página aparece en google con respecto a egit performance. Una vez que el origen de los problemas de rendimiento son archivos sin seguimiento (¿indexados?). Asegúrese de no tener una gran cantidad de archivos sin seguimiento en el árbol de directorios local ya que esto afecta seriamente el rendimiento de egit. Eliminé a un director con archivos de 10K + y el rendimiento de compromiso pasó de tomar más de un minuto para abrir el cuadro de diálogo de confirmación hasta tardar unos segundos.

+0

No tengo ningún archivo sin seguimiento en mi repositorio. Estoy trabajando en el enorme repositorio que tiene alrededor de ~ 28k de archivos Java y 136k commits, pero la mayoría de ellos ya deben estar empacados. – Hemant

+0

Pruebe clonando 'git: // git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git'. Una extracción del kernel de Linux tiene alrededor de 45k archivos y el kernel tiene más de 300k commits. Un repositorio con 28k archivos y 136k commits es uno grande, no enorme. –

+0

Para un gran repositorio, intente clonar 'https: // github.com/mozilla/gecko-dev.git'. El clon deberá transferir alrededor de 1,5 GB de datos por cable solo ... –

Cuestiones relacionadas