詩と創作・思索のひろば

ドキドキギュンギュンダイアリーです!!!

Fork me on GitHub

ghq v0.7 をリリースしました

2015-08-11 追記

@kyanny さんに指摘いただいた、ghq.root 配下にシンボリックリンクが存在すると ghq list などが不完全になる不具合を修正した バージョン 0.7.1 をリリースしています。最新版はこちらをご利用ください。

Release v0.7.1: Fixed symlink issue of v0.7 · motemen/ghq · GitHub

Vagrantfile による再現環境、シビれましたね。ありがとうございました!


Release v0.7 · motemen/ghq · GitHub

0.6 からだいぶ時間が経ってしまっていましたが、勢いをつけるための久しぶりのリリースです。リリースページからバイナリをダウンロードするか、go get で入手してください。

go get -u github.com/motemen/ghq

バイナリの配布は今回からすべて zip になってますので、自動化している人はご注意ください。

ghq とは

GitHub などのリモートリポジトリをローカルに clone し整理するための簡単なツールです。詳しくは ghqを使ったローカルリポジトリの統一的・効率的な管理について - delirious thoughts をご覧ください。

リリースノート

  • [feature] Bluemix DevOps Git service に対応 (#56, @uetchy)
  • [feature] GHQ_ROOT 環境変数で ghq.root 設定を上書きできるように (#59)
  • [feature] Darcs に対応 (#55, @maoe)
  • [feature] look コマンドがリモートリポジトリの URL も受けつけるように (#51, @ryotarai)
  • [feature] look コマンドが GHQ_LOOK 環境変数を設定するように (#47, @superbrothers)
  • [improvement] list の高速化 (#54, @maoe)
  • [fix] Windows でのテストの修正 (#48, @kkka)

特に #54 の高速化は変な見落としがないか心配なところです。パッケージングの仕方も変えているので、何か問題がありましたら GitHub から報告 いただければと思います。

ghq.root の新たなデフォルト値を考え中

ghq.root はデフォルトで ~/.ghq になっていますが、これで嬉しい人はいないんじゃないかな〜と最近思ってます(自分も ~/dev とかにしてる)。もうちょっとイカしたデフォルト設定があればそれを採用しようか(それとも初回起動時に設定させるとか)と考えてるところなので、もしご意見があればイシューにコメントいただけると幸いです。

Default value for `ghq.root` · Issue #60 · motemen/ghq · GitHub

ghq v0.5-pre1 をリリースしました(`ghq import` が変わります)

https://github.com/motemen/ghq/releases/tag/v0.5-pre1

ようやく重い腰をあげ、ghq に、懸案であった ghq import への変更をいれました。

このバージョンでは以下の非互換なものを含む変更が入ります:

  • ghq import はサブコマンドを取らず、標準入力から URL のリストを受け取り、それぞれに ghq get を行うコマンドになります。
    • それに伴い、ghq import starred および ghq import pocket は廃止されます。
    • 副次的な効果として、Mercurial がインストールされていなくても go get で ghq をインストールすることができます。(わらい)
  • リリースにより配布されるコンパイル済バイナリが環境によりうまく動かなかった問題が修正されます。

そもそもこんな変更でいいのか、など特に反応がなければこれをバージョン 0.5 としてドキュメントを整備してリリースしたいと思います。

ghq import starredghq import pocket を使っていたみなさまにおかれましては、以下のような代替策を用意してあります。

GitHub でスターをつけたリポジトリをクローンする

github-list-starred を使います。

% go get github.com/motemen/github-list-starred
% github-list-starred motemen | ghq import

Pocket に追加した GitHub のリポジトリをクローンする

go-pocket を使います。

% ghq get https://github.com/motemen/go-pocket
% ghq look motemen/go-pocket

% go install -ldflags "-X main.consumerKey '<YOUR_POCKET_CONSUMER_KEY>'" ./cmd/pocket
% cp pocket 
% exit

% pocket list --domain=github.com | ghq import

go-pocket は現在鋭意開発中なのでもうちょっといい感じになる予定です(物理的な理由で push できてない)。


そのほかご意見ご感想などお気軽に Issue によろしくお願いいたします。エゴサーチが壊滅してるので……

ghq 最近の変更とこれから

ども、ghq の方から来ました。各方面から PR いただいたおかげであれから機能がぐんぐん増えました。現在の最新バージョン 0.4 とリリース当初のバージョンを較べると:

  • GitHub (Enterprise), Google Code だけでなく、Git もしくは Mercurial に対応しているリポジトリであれば clone できるようになりました。
  • GitHub からの clone 時、ghq get -pssh プロトコルを使用します。
  • ghq get -shallow で、shallow clone(履歴を辿らない clone)を行います。Git のみ。
  • ghq get git@github.com… みたいなこともできるようになりました。
  • ghq import starred 時に GitHubAPI トークンを指定できるようになりました。
  • Homebrew tap ができました: https://github.com/motemen/homebrew-ghq
  • ghq.<url>.vcs 設定値で、リモートの VCS を明示的に指定できるようになりました。こんな感じです:
[ghq "https://ghe.example.com/"]
vcs = git

……などなど。ここで PR くださった方の名前はいちいち挙げませんが、ありがとうございます。おかげさまで大変たのしく過ごしております。

Tips

git-config には url.<url>.insteadOf, url.<url>.pushInsteadOf というキーがあり、これらを設定することで、それぞれ clone (fetch) や push 時に与えられた URL を書き換えてアクセスするよう Git に指示できます。

[url "git@github.com:motemen"]
pushInsteadOf = https://github.com/motemen
[url "git@ghe.example.com:"]
insteadOf = https://ghe.example.com/

こういう設定にしていると、git clone https://github.com/motemen/pusheen-explorer で clone したリポジトリからでもそのまま push できるようになりますし、git clone https://ghe.example.com/some/repo したときには ssh プロトコルを使って clone するようになります。ghq に限りませんが、便利な設定です。

これから

今後入れたい大きな変更としては、ghq import を ghq 本体の外に出すというのと(ghq import pocket は個人的にはスゲー便利だったんだけどたぶん誰も使ってない、標準入力から URL のリストを取って ghq get できるようにすればいいかな?)、検討中ですが設定ファイルを gitconfig から分離するってのがあります。考え中のところなんで、ご意見ご要望ご PR などございましたら GitHub のほうまでよろしくお願いいたします。

はてなで一緒に働きませんか?