Mediante la combinación de la respuesta de Hugo (1) con información que se encuentra aquí (2), y la agitación de alguna sed
, tengo esto:
alias newest="find . -path ./.git -prune -o -type f -exec stat -c \"%y %n\" '{}' + | sort -r | head -1 | sed s#'.*\./'##"
GIT_AUTHOR_DATE="$(newest | xargs date -u -r)" GIT_COMMITTER_DATE="$(newest | xargs date -u -r)" git commit -m "Old sources retaining old change-dates of last changed file: $(newest), actual commit date: $(date)"
La principal diferencia es que esta versión hace una búsqueda recursiva, por lo obtienes el último archivo en cualquier lugar del árbol, aunque omite el directorio .git, intencionalmente.
Puede, por supuesto, querer soltar una de las variables de fecha aquí, y estoy usando una versión bastante reciente de Bash (4.2.37 (1)), por lo que la notación $() podría no funcionar para ti (simplemente reemplázalo con barras (`) en su lugar).
¿Has intentado cambiar tu reloj? =) Creo que debería funcionar a nivel local, pero no estoy seguro de qué pasaría cuando los demás se fusionen. – Kieveli
Las marcas de tiempo no son relevantes para las fusiones. – Dustin