LoginSignup
0
2

More than 3 years have passed since last update.

特定ディレクトリ以下のファイルを全てgit update-index --assume-unchangedするシェルスクリプト

Last updated at Posted at 2019-08-28

概要

かなり特殊ケースだが、自分は遭遇した。

  • ローカルの開発環境で本番の再現をしたい
  • DB はダンプを取って FTP で持ってきた
  • アップロードされている現状の画像は欲しいが FTP だと面倒なので git clone 時に持って行きたい
  • 今後アップロードされる画像は git 管理対象にしたくない

git update-index --assume-unchanged については下記の記事が参考になる。

既に git 管理しているファイルをあえて無視したい - Qiita

コード

assume-unchanged.sh みたいな名前で作る。

#!/bin/sh
array=(`ls -ald $(find "$1") | awk '$1 !~ /d/ {print $9 }'`)
for var in ${array[@]}
do
    var=`printf ${var}`
    echo $var
    git update-index --assume-unchanged $var
done

実行と確認

本番で画像アップロードの変更があったら下記スクリプトを実行する。
git ls-files -v の先頭が小文字になっていれば成功。

$ chmod 700 assume-unchanged.sh
$ ./assume-unchanged.sh ディレクトリパス
$ git ls-files -v
0
2
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
0
2