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
—