gitでディレクトリ構成を維持する
今日もgitネタ.
gitでディレクトリ構成を維持したい時が度々ある. しかし,空のディレクトリはgitで管理されない.
そこで,ディレクトリを保持したい場合は,中に.gitkeep
をおいておくといいそうな.
git gitkeep
すべてのディレクトリに,いちいち作成していくのは面倒臭いのでgitのサブコマンド(gitkeep)https://gist.github.com/ringohub/7939324を作りました.
せっかくなので,コードを解説. シェルで書きました.bashが入っていれば動きます.
gitリポジトリかどうかをチェック
gitリポジトリでないところで実行した場合,.gitkeep
が作成されてしまうと困るので,ガード文を書きました.
if ! git rev-parse 2> /dev/null; then echo -e "\033[0;31mERROR\033[0;39m: This directory is not git repository \033[0;31m:(\033[0;39m" exit 1 fi
ディレクトリを探索しながら.gitkeep
を配置
次のような流れで.gitkeep
を作成してます.
Seek() { for DIR in * ; do if [ -d "${DIR}" ]; then if [ -f "${DIR}/.gitkeep" ]; then echo ".gitkeep already exists .gitkeep in `pwd`/${DIR}" elif [ -z "$(ls -A ${DIR})" ]; then touch ${DIR}/.gitkeep echo "Create .gitkeep in `pwd`/${DIR}" fi (cd "${DIR}"; Seek;) fi done } Seek;
- 入力がディレクトリか否かを判定
if [ -d "${DIR}” ]
- 対象のディレクトリに
.gitkeep
が存在するかを判定if [ -f "${DIR}/.gitkeep” ]
- 存在しない場合,ディレクトリが空か判定
elif [ -z "$(ls -A ${DIR})” ]
- 空だった場合,
.gitkeep
ファイルを作成touch ${DIR}/.gitkeep
使い方,
- git-gitkeep.shをダウンロードしてパスが通ってる場所に配置
chmod 755
で権限を与えるgit gitkeep
を実行
ディレクトリが空じゃなくなったら.gitkeep
を削除するようにした方がいいのかなぁ??