LoginSignup
11
8

More than 5 years have passed since last update.

.gitignore は自動生成してる

Last updated at Posted at 2015-02-15

まず gibo

gibo を使う
https://github.com/simonwhitaker/gibo

$ gibo osx
### https://raw.github.com/github/gitignore/408c616ae0ad8f4b8101d8e876b9b67ac6b14059/Global/osx.gitignore

.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon

# Thumbnails
._*

# Files that might appear on external disk
.Spotlight-V100
.Trashes

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

上のように、 gibo を使うと .gitignore 用の行を出力する。
なので普通、シェルの >> (追記リダイレクト) で .gitignore に足していく

$ gibo osx python >> .gitignore

しかし、この操作では gibo でどのファイルを無視したのか記録しきれなくなる。

忘れて3回分記録してしまう例
$ gibo python >> .gitignore
$ # しばらく経つ
$ gibo python >> .gitignore
$ # しばらく経つ
$ gibo python >> .gitignore

3 回実行すれば、当然 3 回分追記される。忘れる方が悪いんだけど。

そして .gitignore_gen

そこで、私はプロジェクト内に .gitignore_gen というファイルを作ることにしている。
.gitignore_gen は単に bash スクリプトになっている。
内容の例を以下に示す。

.gitignore_gen
#!/usr/bin/env bash -eu 
cd "${0%/*}" && exec > .gitignore
gibo osx
gibo linux
gibo vagrant
gibo python

内容は実にそのまま、 .gitignore_gen のあるディレクトリの .gitignore を上書きするようリダイレクトし、 gibo の出力を記録する。

権限をつけて実行
$ chmod +x .gitignore_gen
$ ./.gitignore_gen

このようにしておけば、 gibo で一度出力した内容をさらに .gitignore に記録してしまう可能性はない。

また、 gibo に含まれていないプログラミング言語やフレームワークの場合も、
以下の cat を利用してヒアドキュメントにできる。

.gitignore_gen
#!/usr/bin/env bash -eu 
cd "${0%/*}" && exec > .gitignore
gibo osx
gibo linux
gibo vagrant
gibo python
cat <<'EOF'

.foobar.conf
something_*.log

EOF
11
8
1

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
11
8