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 關注
- 644 瀏覽
添加回答
舉報