ついに 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