3 回答
TA贡献1802条经验 获得超6个赞
但是,如果您真的想在结帐时使用提交时间作为时间戳,请尝试使用此脚本并将其(作为可执行文件)放置在文件$ GIT_DIR / .git / hooks / post-checkout中:
#!/bin/sh -e
OS=${OS:-`uname`}
old_rev="$1"
new_rev="$2"
get_file_rev() {
git rev-list -n 1 "$new_rev" "$1"
}
if [ "$OS" = 'Linux' ]
then
update_file_timestamp() {
file_time=`git show --pretty=format:%ai --abbrev-commit "$(get_file_rev "$1")" | head -n 1`
touch -d "$file_time" "$1"
}
elif [ "$OS" = 'FreeBSD' ]
then
update_file_timestamp() {
file_time=`date -r "$(git show --pretty=format:%at --abbrev-commit "$(get_file_rev "$1")" | head -n 1)" '+%Y%m%d%H%M.%S'`
touch -h -t "$file_time" "$1"
}
else
echo "timestamp changing not implemented" >&2
exit 1
fi
IFS=`printf '\t\n\t'`
git ls-files | while read -r file
do
update_file_timestamp "$file"
done
但是请注意,此脚本将导致检出大型存储库的较大延迟(其中大型意味着大量文件,而不是大型文件)。
- 3 回答
- 0 关注
- 601 浏览
添加回答
举报