モーグルとカバとパウダーの日記 このページをアンテナに追加 RSSフィード Twitter

モーグルやカバ(EXカービングスキー)、山スキー(BC)の山行記録などがメインの日記です。
いろんな条件のいろんなところを、その時々の条件にあった滑り方で楽しむ、フリースキーをして遊んでいます。

検索で来られた方は、上の検索窓から再度検索していただくか、右サイドバーのカテゴリーやトピックスの項目で絞り込んでみてください。
仕事柄、コンピュータ系のネタも多いので、スキー関連ネタだけ読みたい方は[ski]、コンピュータ関連ネタは[pc]、スパム関連ネタは[spam]で絞り込んでください。

2015-11-10 (Tue)

[]gitで取ってきたファイルのタイムスタンプをcommit日付に直す gitで取ってきたファイルのタイムスタンプをcommit日付に直すを含むブックマーク gitで取ってきたファイルのタイムスタンプをcommit日付に直すのブックマークコメント

git clone等で取得したファイルのタイムスタンプは、commitされた日時ではなく、そのgitコマンドを発行した日時になってしまいます。

なんかオプション指定でもすれば、commitした日時にできるのかな?と思ったのですが、簡単にはできないみたいで、gitwikiタイムスタンプを変更するperlスクリプトが書かれていました。


Setting the timestamps of the files to the commit timestamp of the commit which last touched them

https://git.wiki.kernel.org/index.php/ExampleScripts#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」という形に置き換えるようになっています。

トラックバック - http://d.hatena.ne.jp/stealthinu/20151110/p1