2022年6月17日金曜日

gitn: たくさんのリポジトリをシュッと管理する CLI を作った

たくさんのアプリを作っていたり、たくさんのリポジトリを管理するアプリを作っていると、 たくさんのリポジトリをシュッと管理する CLI が欲しくなります。 一気に git pull して更新したり、一気に git commit したくなりますよね。

そこで gitn を作りました。 どうせ自分しか使わないので名前は適当ですが、 複数 (n) の git リポジトリに命令を投げるので、gitn (ぎっとぅん) です。

gitn

たくさんのリポジトリの管理というテーマ自体は昔からあるので、使えそうなものがないか事前に検索してみました。 ghq はもともと有名で知っていたのですが、条件を満たさなかったので他の CLI も探したところ、 gitbatch, gita, git-xargs が見つかりました。 ただどれもちょっと欲しい機能が違う。

リストを与えたら、シュッと処理してくれればそれで良いのです。 より正確には、 (1) 任意のディレクトリで実行しやすく、 (2) 任意のリストで実行しやすく、 (3) 自分の好みに拡張しやすくなっていることが大切です。 (4) またリポジトリのリストさえ持っておけば、自由に応用できると良いです。

gitn なら以下のようにできます。 コマンドは gitn [command] [to dir] [by list] で考えます。超かんたん。
gitn clone vendor/ repos.lst
gitn pull vendor/ repos.lst
gitn push vendor/ repos.lst
gitn status . repos.lst
gitn add . repos.lst *
gitn commit . repos.lst -m "comment"

ソースコードもシングルファイルで 100行ないので、誰でも挙動がわかります。

ちなみに Git には git submodule コマンドがあるので、バージョンをロックしたい時はそちらを使うと良いです。 しかし head しか使わない時とか、無駄な更新コミットで溢れかえらせたくない時とか、ロックする必要がない時には gitn が便利かも知れません。 また git submodule は死ぬほど遅いので、リポジトリが増えてくると結局似たようなスクリプトを書く必要が出てきます。 そんな訳で、リポジトリが増えすぎて submodule 化したくない時にも使えます。

0 件のコメント: