Aprendo “árbol” e “índice” de este artículo: Aprendiendo Git Internals por ejemplo
pero cuando se trata del comando “git filter-branch”, no sé cuál es la diferencia entre “–tree-filter” y “–index-filter”.
Aprendo “árbol” e “índice” de este artículo: Aprendiendo Git Internals por ejemplo
pero cuando se trata del comando “git filter-branch”, no sé cuál es la diferencia entre “–tree-filter” y “–index-filter”.
La versión corta es que --tree-filter
verifica cada confirmación en un directorio temporal, ejecuta su comando de filtro y crea una nueva confirmación a partir de lo que sea que esté ahora en el directorio temporal; tiempo --index-filter
copia cada confirmación en el índice, ejecuta su comando de filtro y crea una nueva confirmación a partir de lo que esté ahora en el índice.
Copiar un compromiso en el índice es mucho1 más rápido que verificar el compromiso. Crear una confirmación desde el índice es más rápido que crear una confirmación desde un directorio. Como resultado, usar el filtro de índice es mucho más rápido que usar el filtro de árbol. Sin embargo, no es tan fácil escribir un guión.
1La diferencia de velocidad exacta depende de su directorio temporal: un sistema de archivos en memoria es más rápido que un sistema de archivos en SSD, que es más rápido que en medios giratorios, por lo que gana más si usa medios giratorios que si puede apunte el filtro de árbol a un sistema de archivos en memoria. Pero incluso entonces, el filtro de índice es aún más rápido.
En discos reales, he visto un factor de 100 más o menos (por lo tanto, un filtro de índice que tarda 2 minutos se traduce en un filtro de árbol que tarda más de 3 horas).
¡Increíble investigación adicional allí @torek, no puedo aprender estas cosas simplemente leyendo los documentos!
– timhc22
24 de febrero a las 2:51
@ timhc22: Me estoy aproximando a partir de algunos valores históricos aquí. Hice muchas cirugías de depósito a mediados de 200x o principios de 201x. Tuve que usar medios giratorios reales por un tiempo, luego tuve un sistema de archivos ramdisk para usar para algunos de ellos más tarde…
– torek
24 de febrero a las 10:54
¿Has leído el documentación ?
– Tim Biegeleisen
28 de marzo de 2016 a las 2:58
@TimBiegeleisen Sí, pero creo que este concepto de Git es difícil de entender…
– Ve arriba
28 de marzo de 2016 a las 3:13
¡Uno no simplemente lee los documentos @TimBiegeleisen! ¡Hay insignias para ganar! (Gran nombre por cierto 😉 )
– timhc22
24 de febrero a las 2:48