自分で作った、バージョンのインクリメントからコミット、タグ付け、最後にpush
する(こともできる)git-release.jsが使い勝手良いので愛用してる。ただ.git
ディレクトリがあることを前提としているので、このままではsubmoduleのディレクトリではリリースできなかった。そこをちゃんとするようにしたり、iniパッケージを使うようにしたりした。
Download: git-release.js
git rev-parse --git-dir
で普通のリポジトリでもsubmoduleでも適切なGitディレクトリのパスを返してくれる。submoduleの場合は親の.git/modules/submodule_name
になる。今までは2回Gitを呼ぶのが面倒だったので、git rev-parse --show-toplevel
でリポジトリのルートを拾って、決め打ちで.git/config
を加えて設定ファイルを探していたけどやめた。
submoduleのディレクトリには.git
ディレクトリの代わり.git
ファイルがあり、これに以下の様な形でGitディレクトリへの相対パスが記録されているので、これを見てもできそうに見える。
gitdir: ../../.git/modules/submodule_name
しかし.git
ファイルがどのような構造でどのようなデータが記録されるかが明文化されていないので、これを見るのは良くなさそう。
git config --local --get-regexp release.*
とかで拾った方が良いのかな。けどどっちにしろリポジトリのルートは必要だし、パースしやすさも考えるとINIファイルな$GIT_DIR/config
を直接読んだ方が良さそうな気がする。