ついに git の空のディレクトリの時代が終わる
git での空ディレクトリの扱いは、こちら (git/空のディレクトリが消えているんですけど - TOBY SOFT wiki) に掲載されている通り
一般的には、gitで空のディレクトリを追加するには、空のディレクトリをなくす、つまり例えば「空の.gitignoreファイルを置く」
で、空のディレクトリの発見は
find . -type d -empty -not -path './.git*' -exec touch {}\/.gitignore \;
ということなんでしょうが、
- ネット上から svn でチェックアウトしたものを
- ローカル上では git で管理する
ようなケースの場合、find 的には空ではないが、git 的には空っぽのディレクトリ、つまり「.svn」の扱いがとても面倒です。
結局、手作業で発見するのは骨が折れますので、スクリプトを書いてみました。
当該ディレクトリに移動して、下記スクリプトを実行すれば、.gitignore を生成するところまで完了してくれます。
#!/bin/sh set -x -e -u FIND=/usr/bin/find if [ -x ${FIND} ]; then for i in `${FIND} . -type d | egrep -v '\.(svn|git)'`; do if [ -z "`/bin/ls $i`" ]; then touch $i/.gitignore fi; done exit 0 fi exit 1