分散したローカルリポジトリをhln+ghq+pecoで管理する

こんなことをやっていたら、それghqという彼方からの説教が聞こえたので。

ghqとは

Gitのローカルリポジトリを一括管理できるコマンドラインツールです。指定したディレクトリ以下にローカルリポジトリを配置することにより、検索してcdとかが簡単にできます。

pecoとは

標準入力をインクリメンタルサーチするコマンドラインツールです。これにより、ghq管理下のリポジトリをインクリメンタルサーチすることができます。

ローカルリポジトリの分散

ghq+pecoによるローカルリポジトリ管理は非常に快適なのですが、一身上の都合によりディレクトリを移動できないリポジトリも存在します。Alfred WorkflowとかSublime Textの設定ファイルとか。

ghqのルートディレクトリ以下に/プロジェクト名/.gitを配置しないと、ghqで管理することができません。

どうするか。

ディレクトリのハードリンクを作成する

hlnを利用して、ghqルートディレクトリ以下にディレクトリのハードリンクを作成します。

例えば、Alfred Workflowのディレクトリをターミナルで開いているとして…

1
2
3
$ hln $(pwd) $(ghq root)/github.com/catfist/Add-to-Listacular
$ ghq list Add
github.com/catfist/Add-to-Listacular

こんな具合ですね。当初、シンボリックリンクとかエイリアスとかでなんとかしようとして吐きそうになってました。

おまけ:Gistsもghqで管理しようとしたが

gistyで既存のGistsを全部ローカルに引っ張れるので、これでコード管理楽勝じゃんヤッホーと一瞬だけ思ったのですが。

スクリーンショット

これはつらい。人間が読めるディレクトリ名してないので無理があります。

Gistsだけは別枠で管理するしかなさそうです。まあ、実際そのほうがいいとも思う。