Leo el libro de subversión y para mí está claro que subversion no almacena archivos individuales, sino solo deltas para minimizar el espacio en el disco. Subversion también hace lo mismo con los archivos binarios (esto solía ser una gran debilidad del CVS).¿Cómo almacena exactamente subversion los archivos en el repositorio?
Sin embargo, no entiendo el mecanismo exacto. Cuando confirmo un archivo, ¿qué sucede?
- Subversion almacena sólo el diff (y ya tiene la versión antigua)
- Subversion elimina la versión anterior, almacena el nuevo archivo intacto y crea un diff inversa con el fin de "re-crear" la versión anterior si necesario.
- Algo más que no he pensado.
El primer caso podría parecer el más lógico. Sin embargo, esto plantea otra pregunta. Si tengo en un repositorio de subversión un archivo con 1000 commits y un nuevo desarrollador revisa una copia limpia, entonces subversion debería buscar la versión original (importación inicial) y aplicar 1000 diffs antes de devolver el resultado. ¿Es esto correcto? ¿Hay algún tipo de almacenamiento en caché para los archivos donde también se guarda la última versión?
Básicamente, ¿dónde puedo encontrar información sobre el repositorio svn interno?
Actualización: Aparentemente el backend de la subversión juega un papel importante en esto. En el momento o escribiendo, FSFS usa la opción 1, mientras que BDB usa la opción 2. Gracias msemack!
pequeña corrección: "Las versiones posteriores de la subversión también hacer lo mismo con los archivos binarios así". Subversion SIEMPRE ha hecho esto (al menos desde la versión 0.3.x). –
posible duplicado de [rendimiento de SVN después de muchas revisiones] (http://stackoverflow.com/questions/127692/svn-performance-after-many-revisions) –
También encuentro esto muy confuso. Hay varios back-ends disponibles, bdb y fsfs. Luego hay documentos sobre "burbujas arriba", skip-delta que parecen contradecirse entre sí. ¿Cuál es la forma actual en que un repositorio svn predeterminado almacena sus archivos? – Thomas