2011-10-11 23 views
8

Actualmente estamos utilizando Subversion como nuestro repositorio de código fuente. Estamos en la fase de planificación de la conversión a Git. Nuestro repositorio de Subversion es actualmente de 19 Gb. ¿Cómo se compara un repositorio de Git con Subversion en cuanto a los requisitos de espacio en disco? ¿A qué se traducirá mi repositorio svn 19Gb en un repositorio de Git?¿Cuánto espacio necesito para Git vs SVN?

+2

Única manera de saberlo con certeza: haga la conversión y compruébelo usted mismo. –

+0

Otra cosa a tener en cuenta es que cada cliente de Git también almacena todo el repositorio, SVN, sin embargo, cada cliente solo almacena la última revisión. Por lo tanto, los requisitos de espacio de Git en general son el tamaño de repo entero x la cantidad de clientes + 1 (servidor). – malhal

Respuesta

16

Es difícil de adivinar el tamaño exacto que tomará su repositorio Git, ya que depende de varios factores, por ejemplo

  • tipo de objetos almacenados
  • número de ramas, etiquetas
  • serie de características/duplicar objetos

Git tiene un buen algoritmo de compresión y, según mi experiencia anterior, fue capaz de reducir el tamaño de un repositorio SVN hasta 10 veces. Here's some examples.

Sin embargo, la mejor manera es probarlo usted mismo. En el equipo local puede convertir el repositorio SVN en Git

$ git-svn clone -s http://path/to/subversion reponame 

continuación, ejecute git gc y ver la cantidad de espacio que necesita para empezar.

0

Como git guarda todo el repositorio en cada máquina, también almacena el historial completo y si ha agregado y luego eliminado un archivo grande, notará que en realidad el espacio en disco no se ha reducido. Si está completamente seguro de querer eliminar un archivo permanentemente, debe ejecutar comandos especiales en git.

git filter-branch -f --index-filter 'git rm -r --cached --ignore-unmatch "filename"' --prune-empty HEAD 
rm -rf .git/refs/original/ && git reflog expire --expire=now --all && git gc --aggressive --prune=now 

Hoy me movía uno de mis repositorios SVN a GIT con el comando git svn, lo que le permite moverse no sólo los datos actuales, sino también la historia. Y esto es lo que tengo.

El tamaño del svn repo actual en mi pc es de 1,27 GB, el nuevo git repo es de 3,24 GB. Esto se debe a que git repo contiene toda la historia, los archivos eliminados no se borran en git, hasta que lo haces explícitamente como mencioné anteriormente. Si encuentra algún problema mientras se muda a git, puede buscar las respuestas here