Hace tiempo que quiero guardar la fecha de los archivos cuando se hacen los commits en GIT y que al hacer el checkout vuelva a restaurarlos.
Había encontrado un par de soluciones, entre ellas:
Pregunta en stackoverflow.com acerca de la misma inquietud, en donde se exponen algunas propuestas, hacer un script ad Hoc, Metastore (que ya está como caido) y git-cache-meta que parece funcionar
git-cache-meta
Que tiene varias contribuciones, entre ellas una de danny0838 con una adaptación para msysgit
Y para utilizarlo de manera automática encontré en la misma pregunta una forma de utilizarlo, el mismo danny0838 hizo una versión más ligera pero que utilizar Perl y depende de commandos *nix.
https://github.com/danny0838/git-store-meta
Lo que logré fue adaptar los hooks en pre-commit y post-checkout para que lanze el comando.
Falta mejorarlo para que cuando se clona el proyecto por primera vez, instale los hooks de manera automática y hace el –apply de los metadatos.
copiar_hooks_client_side.sh
#!/bin/sh
# Copia los hooks de un repositorio de hooks a la carpeta del proyecto GIT desde donde se llama.
echo "Copiando HOOKS de GIT-CACHE-META-MSYSGIT al proyecto $PWD"
cp /ruta-al-repo-de-hooks/git-cache-meta-msysgit.sh $PWD/.git/hooks/git-cache-meta-msysgit.sh
cp /ruta-al-repo-de-hooks/post-checkout $PWD/.git/hooks/post-checkout
cp /ruta-al-repo-de-hooks/pre-commit $PWD/.git/hooks/pre-commit
pre-commit
#!/bin/sh
# when running the hook, cwd is the top level of working tree
# store
echo "Almacenar metadatos de archivos en el repo ..."
sh $(dirname "$0")/git-cache-meta-msysgit.sh --store || exit 1
# remember to add the updated cache file
git add .git_cache_meta
post-checkout
#!/bin/sh
# when running the hook, cwd is the top level of working tree
sha_old=$1
sha_new=$2
change_br=$3
# apply metadata only when the HEAD is changed
if [ ${sha_new} != ${sha_old} ]; then
echo "Recuperar metadatos de archivos ..."
sh $(dirname "$0")/git-cache-meta-msysgit.sh --apply
fi
Nota: para saber sobre los directorios en script bash (
$PWD
http://unix.stackexchange.com/questions/188182/how-to-get-current-working-directory
—