Alguien tomó una versión (desconocida para mí) de Moodle, aplicó muchos cambios dentro de un directorio y la lanzó (tree here).Git: ¿Cómo puedo encontrar una confirmación que coincida más estrechamente con un directorio?
¿Cómo puedo determinar qué compromiso del proyecto original fue editado para formar este árbol?
esto me permitiría formar una rama en la confirmación adecuada con este parche. Seguramente vino de las ramas 1.8 o 1.9, probablemente de una etiqueta de lanzamiento, pero diferir entre las confirmaciones particulares no me ayuda mucho.
Postmortem Actualización:knittl's answer me tiene tan cerca como voy a conseguir. Primero agregué mi repositorio de parches como el control remoto "extranjero" (sin confirmaciones en común, eso está bien), luego hice diffs en los bucles con un par de opciones de formato. El primero utiliza el formato --shortstat
:
for REV in $(git rev-list v1.9.0^..v1.9.5); do
git diff --shortstat "$REV" f7f7ad53c8839b8ea4e7 -- mod/assignment >> ~/rdiffs.txt;
echo "$REV" >> ~/rdiffs.txt;
done;
El segundo solo contaron los cambios de línea en un diff unificado sin contexto:
for REV in $(git rev-list v1.9.0^..v1.9.5); do
git diff -U0 "$REV" f7f7ad53c8839b8ea4e7 -- mod/assignment | wc -l >> ~/rdiffs2.txt;
echo "$REV" >> ~/rdiffs2.txt;
done;
Había miles de confirmaciones para cavar a través, pero this one parece haber el partido más cercano.
Si usted puede encontrar alguna prueba significativa que se puede aplicar a un particular, se comprometen de la cesión temporal Moodle y la inicial comprometerse de moodle-matriz de valoración para determinar si éste ocurrió antes o después de la primera, puede usar 'git bisect' para regresar rápidamente a la confirmación de la fuente. Echa un vistazo a 'git bisect --help' para los flacos. –
Gracias usó esto ahora con gran éxito. Used 'cat rdiffs.txt | grep -oe '[0-9] * inserciones' | ordenar -n | head -n 10' (y similar) para reducir la cantidad más baja de cambios sin tener que realizar ninguna búsqueda manual. Solo mencionando en caso de que alguien encuentre la información adicional a mano. –