以前紹介したghqというツールで GitHub のリポジトリを手元に簡単クローンしてたのを、環境が新しくなったついでに Go で書き直し、完全リニューアルしました。(前は zsh だったのでなんだかなーと思ってた。)
そもそも何をするツールか
GitHub や Google Code Project でホストされている Git、Mercurial のリポジトリを手元にクローンすることができます。リポジトリは設定したルート(デフォルトで ~/.ghq
)以下に、以下のようなパスで置かれます。
~/.ghq/github.com/motemen/ghq
go get と似てますね。同じような感じで ghq get <URL>
します。
% ghq get https://github.com/motemen/ghq clone https://github.com/motemen/ghq -> /Users/motemen/.ghq/github.com/motemen/ghq git clone https://github.com/motemen/ghq /Users/motemen/.ghq/github.com/motemen/ghq Cloning into '/Users/motemen/.ghq/github.com/motemen/ghq'... remote: Reusing existing pack: 269, done. remote: Counting objects: 16, done. remote: Compressing objects: 100% (16/16), done. remote: Total 285 (delta 7), reused 0 (delta 0) Receiving objects: 100% (285/285), 52.52 KiB, done. Resolving deltas: 100% (156/156), done.
また、手元のリポジトリを一覧したり、
% ghq list go # "go" を含むリポジトリを検索 github.com/google/go-github github.com/google/vroom github.com/googleads/googleads-adsense-examples code.google.com/p/go.text code.google.com/p/go.tools
特定のリポジトリルートに移動(cd
してシェルを起動)したりすることができます。
% ghq look vim cd /Users/motemen/.ghq/code.google.com/p/vim % # cd した上で新しいシェルが起動する
便利ですね。
インストール
go get github.com/motemen/ghq
後述の Pocket 連携を有効にしてビルドしたい場合は、API キーを指定してビルドする必要があります。
go get -ldflags "-X github.com/motemen/ghq/pocket.ConsumerKey <your Pocket consumer key>" github.com/motemen/ghq
設定
設定は git config
を通じて読み込まれるので、~/.gitconfig
に書いてください。
ghq.root: 唯一の設定項目です。このルートディレクトリ以下に、リポジトリの URL に基づいたパスでローカルクローンが作られます。デフォルトで ~/.ghq
なのでいい感じに設定してください。これは複数設定することもできて、その場合、新しいリポジトリのクローンは最初の設定値の配下に行われます。
自分の場合は以下のようにして、Go 言語のソースだけは go get
で 取得し $GOPATH/src 以下に($GOPATH
が ~/.go
になってる)、そうでないものは ghq get
で ~/.ghq
以下に取得するようにしています。
# ~/.gitconfig [ghq] root = ~/.ghq root = ~/.go/src
一覧するときは両方のディレクトリが使用されます。
% ghq list --full-path /Users/motemen/.ghq/code.google.com/p/vim /Users/motemen/.ghq/github.com/motemen/git-browse-remote /Users/motemen/.go/src/github.com/BurntSushi/toml /Users/motemen/.go/src/github.com/motemen/ghq
インポート
おもしろ機能です。ローカルにクローンするリポジトリの一覧を、GitHub または Pocket から取得します。
GitHub から
特定のユーザがスターをつけたリポジトリを一気にクローンします。認証とかは不要。
% ghq import starred motemen
Pocket から
Pocket に追加した github.com の URL を探してきて、リポジトリっぽいものをクローンしてきます。
上に書いたとおり、Pocket のコンシューマーキーつきでビルドする必要があります。最初の一回は OAuth 認証のためブラウザを起動してアクセスする必要があります。
% ghq import pocket
どうぞご利用ください
zsh 用の補完もあります。Issue・PR お待ちしております。
2014-06-27 追記
おかげさまで、いろいろな方に紹介してもらってます。