Hatena::Groupsubtech

NaN days

ブログを移転しています。最新の記事は motemen.hatenablog.com へどうぞ

2013-02-07

GitHub のリポジトリを管理する小さいツール ghq

| 13:14 | GitHub のリポジトリを管理する小さいツール ghq - NaN days を含むブックマーク はてなブックマーク - GitHub のリポジトリを管理する小さいツール ghq - NaN days

この記事は古いです。お探しなのghq: リモートリポジトリのローカルクローンをシンプルに管理する - 詩と創作・思索のひろば の方かもしれません。

GitHub 上の面白そうなコードは手元に clone してから見るのが普通だと思いますがそれをこんな感じに整理してます。

  • ~/extrepo/@author/project に git clone する(~/extrepo/@motemen/ghq とか)
  • ~/extrepo/project からそこに symlink する(~/extrepo/ghq → ~/extrepo/@motemen/ghq

こうすると ~/extrepo/jquery などでアクセスできて楽です。「あの人のあのプロダクト」って思い出し方をしたいときには ~/extrepo/@motemen を辿っていけばよい。

tree するとこんな感じです。

.
|-- @cho45
|   |-- Config-ENV
:
|   |-- jsdeferred
|   `-- starter.pl
|-- @cloudhead
|   |-- http-console
|   `-- less.js
:
|-- Brownie -> @masaki/Brownie
|-- Class-Accessor-Lite -> @kazuho/p5-Class-Accessor-Lite
:
|-- webiblo -> @mizzy/webiblo
`-- ws -> @einaros/ws

ghq

そしてこれを簡単に行うためのオレオレツールghq です。以下のようにして使えます。

clone する
% ghq [-clone] https://github.com/motemen/polka

のようにすると ~/extrepo/@motemen/polka に git clone されて先に伸べたようなシンボリックリンクが作られます。

ディレクトリへ移動する
% ghq [-cd] polka

または

% ghq [-cd] @motemen/polka

とするとそのディレクトリへ cd します。

インストール

zshスクリプトで書いてます。

% git clone git://github.com/motemen/ghq.git ghq_dir

したのち

fpath=(ghq_dir/zsh $fpath)
autoload -U ghq
autoload -U compinit; compinit

と .zshrc に書くと、ghq というコマンドと補完(-cd したときなど)が有効になります。clone 先のルートディレクトリgit config ghq.root で変更できます(たぶん)。

あとすでに同名のリポジトリが存在しているときは remote に追加するようにしてみたんだけどそれは余計なお世話だったかもしれない……。