bashbrew/git-set-mtimes

17 lines
412 B
Bash
Executable File

#!/bin/bash
set -e
IFS=$'\n'
files=( $({ git ls-files | xargs -n1 dirname | sort -u && git ls-files; } | sort -r) )
unset IFS
for f in "${files[@]}"; do
if [ ! -e "$f" ]; then
# don't try touching files that don't exist
continue
fi
stamp="$(git --no-pager log -1 --format='format:%ai' -- "$f")"
touchFormat="$(date --date="$stamp" +'%Y%m%d%H%M.%S')"
touch --no-dereference -t "$touchFormat" "$f"
done