gitのタイムスタンプをコミット時の時刻にするfor Mac
ブランチをリモートからfetchして、開発サーバーにrsyncしてるけど、
fetchした時間だと全部syncされて都合が悪い。
subversionにあった”ファイルの更新日付を「最後にコミットした日時に設定」”機能は
gitにないのかなーと思って調べたところ、gitにはないけどスクリプトでやればいい事が判明。
参考ブログ
[gitのタイムスタンプをコミット時の時刻にする]
http://d.hatena.ne.jp/iww/20121011/pretty
あるじゃん、ラッキー!って思ってコピペしたら動かないし・・・
dateの書式違うって言われるし・・・。
色々調べて、スクリプトを修正した。
mac版のスクリプト
#!/bin/bash for FILE in $(git ls-files); do TIME=$(git log --pretty=format:%ci -n1 $FILE) #echo -e $TIME"\t"$FILE STAMP=`date -jnu -f "%Y-%m-%d %H:%M:%S %z" "$TIME" "+%Y%m%d%H%M.%S"` #echo $STAMP touch -t $STAMP $FILE #echo "touch -t $STAMP $FILE" done
勉強になった事
/bin/dash
/dashってbashのスペルミスじゃねーの? ホントに動いたの?
って思ったけど、Debianのシェルだった。
うっかりtwitterで文句言ったらまた恥を晒すところだった・・・
echo -e
echoコマンドで\nとか\t使う場合は、「-e」オプションをつける。
コピペよくない
よく確認もせずコピペして自滅した。
最初から英語のドキュメントを読めばこんなことには・・・。
とりあえずgitにも上げてみた。
https://github.com/ayumu83s/latest_commit_time