LoginSignup
2
0

More than 5 years have passed since last update.

[Git] Git でチェックアウトしたファイル群から最も最近に更新されたファイルパスを取得する

Posted at

CircleCI の checkout などで Git からチェックアウトしたファイルのタイムスタンプは元のファイルのタイムスタンプが維持されずチェックアウトした日時になってしまいます。

そのため、最も最近に更新されたファイルパスを得ることが次のコマンドで出来ません。

# カレントディレクトリの *.txt ファイルの内最も新しいタイムスタンプを持つファイルパスを得る
ls -1t *.txt | head -1

そこで、このコマンドを実行する前に次のスクリプトで Git に記録されているタイムスタンプを各ファイルにセットしてあげます。

git-timestamp.sh
for FILE in $(git ls-files)
do
    TIME=$(git log --pretty=format:%cd -n 1 --date=iso -- "$FILE")
    TIME=$(date -d "$TIME" +%Y%m%d%H%M.%S)
    touch -m -t "$TIME" "$FILE"
done

このスクリプトを用意したら、次のようにすれば最も最近に更新されたファイルパスを得ることが出来ます。

$ bash ./git-timestamp.sh;
$ LAST_MODIFIED_FILEPATH="`ls -1t *.txt | head -1`";
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0