为了账号安全,请及时绑定邮箱和手机立即绑定

git的use-commit-times等效于什么?

git的use-commit-times等效于什么?

Git
红颜莎娜 2019-11-08 10:25:28
我需要本地和服务器上文件的时间戳同步。这是通过Subversion实现的,方法是在配置中设置use-commit-times = true,以便每个文件的最后修改时间是在提交时。每次克隆存储库时,我都希望文件的时间戳反映在远程存储库中上次更改的时间,而不是克隆存储库的时间。有什么办法可以用git吗?
查看完整描述

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

但是请注意,此脚本将导致检出大型存储库的较大延迟(其中大型意味着大量文件,而不是大型文件)。


查看完整回答
反对 回复 2019-11-08
  • 3 回答
  • 0 关注
  • 566 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信