gitにおける空フォルダ階層の作り方
以下のような階層構造を作りたいとしましょう。
repository_root
├ .gitignoreファイル
└ tempフォルダ
├ importフォルダ
├ exportフォルダ
└ etcフォルダ
├ specificAフォルダ
└ specificBフォルダ
各フォルダ内は常に空状態が正常と判断したいため、
何かファイルが作成されたとしても無視したい。。。
だけど、空フォルダだけはキープしたい!!! こんな状況ですね。
.gitkeepファイルを作成する
通常、フォルダだけ作成しても中身が何もないと追加要素がないと判断され、
空フォルダだけは作れない為、今回はgitkeepという無視ファイルを空フォルダ内に置くことで回避するという方法を採用しました。
「.gitkeep」というファイルは普通には作成できないので、一度「gitkeep.txt」 というテキストファイルを作成して、コマンドプロンプトからリネームしましょう。
各フォルダの最下層に.gitkeepファイルを配置する
repository_root
├ .gitignoreファイル
└ tempフォルダ
├ importフォルダ
│ └ .gitkeepファイル ← ココ
├ exportフォルダ
│ └ .gitkeepファイル ← ココ
└ etcフォルダ
├ specificAフォルダ
└ .gitkeepファイル ← ココ
└ specificBフォルダ
└ .gitkeepファイル ← ココ
.gitignoreファイルに無視設定を追記する
最後に、.gitignoreファイルへ上で作成したファイルを無視するよう設定を追加します。
【要点は以下の2つ】
● 最下層にある「.gitkeep」ファイルは無視する。
● 間のフォルダ階層にあるファイルは全て無視する。
#tempFolder IgnoreSettings
/temp/import/*
!.gitkeep
/temp/export/*
!.gitkeep
/temp/etc/*
!/temp/etc/specificA
/temp/etc/specificA/*
!/temp/etc/specificB
/temp/etc/specificB/*
!.gitkeep
※gitがVersion2.7以上であれば、もう少しスマートな書き方が可能らしいですが、目的とした対象環境が古いのでとりあえずこれで良しとします!
subversionではファイル追加漏れでjenkinsビルドを壊すことがしばしばありました。
gitではそうしたことがなくなりましたが、gitでjenkinsビルドを壊す一番の原因がこの空フォルダだと思います。
ですので、結構重要ですね。
その割に.gitkeepをスマートに作成出来ないのがもどかしいですね。