亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 644 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號