2015-11-10 (Tue)
■[pc]gitで取ってきたファイルのタイムスタンプをcommit日付に直す

git clone等で取得したファイルのタイムスタンプは、commitされた日時ではなく、そのgitコマンドを発行した日時になってしまいます。
なんかオプション指定でもすれば、commitした日時にできるのかな?と思ったのですが、簡単にはできないみたいで、gitのwikiにタイムスタンプを変更するperlスクリプトが書かれていました。
Setting the timestamps of the files to the commit timestamp of the commit which last touched them
で、これと同様のことをshellスクリプトで行うものが下記サイトにありました。
http://www.shigemk2.com/entry/git.timestamp
今まわりの人にMobaXTermを勧めていることもあって、MobaXTerm上でこれを使えるようにしたかったのですが、MobaXTermで使われているbusyboxだとdateの挙動の違いで動かなかったため、一部を修正して使えるようにしてみました。
git-set-file-times for busybox
https://github.com/stealthinu/git-set-file-times4busybox
for FILE in `git ls-files`; do TIME=`git log --pretty=format:%ci -n1 ${FILE} | sed -e "s/\([+-][0-9]\{2\}\)00$/\1:00/"` echo -e "${TIME}\t${FILE}" touch -t "${TIME}" ${FILE} done
busyboxのdateコマンドでは「+0900」という書式でのTZ指定はエラーになってしまうため「+09:00」という形に置き換えるようになっています。
- 1571 https://www.google.co.jp/
- 171 http://d.hatena.ne.jp/
- 121 https://www.google.co.jp
- 89 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=35&ved=0ahUKEwiVhoG7o87JAhWBp5QKHWe6Ayk4HhAWCDYwBA&url=http://d.hatena.ne.jp/stealthinu/?of=20&usg=AFQjCNG8IuYzdXp2KaIx24PA7FOceB9JWw
- 88 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=11&ved=0CBsQFjAAOApqFQoTCK3S_JDwlskCFcPmpgod7LMO2g&url=http://d.hatena.ne.jp/stealthinu/?of=20&usg=AFQjCNG8IuYzdXp2KaIx24PA7FOceB9JWw&bvm=bv.107467506,d.dGY
- 80 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwjMievo0vvJAhWjIaYKHXB5A6cQFgghMAE&url=http://d.hatena.ne.jp/stealthinu/20151110/p1&usg=AFQjCNHZTJWtBeLn35uVuNp8DchGDrHUNw
- 60 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0ahUKEwiI4bLomaHMAhXiYqYKHQcxAVYQFggyMAM&url=http://d.hatena.ne.jp/stealthinu/20151110/p1&usg=AFQjCNHZTJWtBeLn35uVuNp8DchGDrHUNw
- 38 http://itchyny.hatenablog.com/entry/2017/05/07/100000
- 38 http://search.yahoo.co.jp/
- 31 https://www.bing.com/