ghq v0.11.1 でGoの依存取得や一括アップデートが便利になりました
motemenにcollaboratorに追加してもらったので、滞留していたissue及びpull requestを大体さばきつつ、機能追加などをおこない、先程v0.11.1をリリースしました。GW中になんと45個のpull requestをマージしました。
今回の目玉は go get/import
の機能追加です。具体的には、ghqで取り込んでいるリポジトリの一括アップデートや、Goの依存の一括取得が簡単になりました。
変更点
詳しくは、 v0.10.0以降のCHANGELOGを見てもらえればと思いますが、一部ピックアップして取り上げます。
ghq get/import
への入力にホストも受け付け可能に
https://github.com/motemen/ghq/pull/119
実はこれまで以下のようにホスト名をつけられなかったのですが、それができるようになりました。ghq import
への入力も同様です。
% ghq get github.com/motemen/ghq
go-import metaタグサポート
https://github.com/motemen/ghq/pull/120
go get
がパッケージのリポジトリを探す時に、 meta name="go-import"
というhtmlタグをヒントにするという仕様がありますが、これに準拠するようにしました。
Go固有の仕様なので、対応可否は微妙なラインですが、Goを書く身にとっては欲しい機能なので、入れることにしました。
これとホスト付加が可能になったことにより、以下のコマンドでGoのプロジェクトの依存の一括取得が可能になりました。
% go list -f '{{join .Deps "\n"}}' | xargs go list -f '{{if not .Standard}}{{.ImportPath}}{{end}}' | ghq import
これは、$GOPATH/src
が廃止されるGo Modules時代に非常に便利でしょう。
go import --parallel/-Pオプション (Experimental)
https://github.com/motemen/ghq/pull/136
go import
での並列取得が可能になりました。6並列決めうちにしています。多くのブラウザの同時接続数と同じなので、これくらいであれば多分お行儀も悪くないはず。
これにより、以下のコマンドで、手元のリポジトリの一括更新を高速にできるようになりました。
% ghq list | ghq import -u -P
ただ、以下のように xargs
を使う場合に比べて速いわけでもないので、もしかしたらrevertするかも知れません。
% ghq list | xargs -L1 -P6 -I@ ghq get -s -u @
ghq get --vcs=
https://github.com/motemen/ghq/pull/72
ghq get
時にVCSを明示的に指定できるようになりました。
ghq get --look
https://github.com/motemen/ghq/pull/112
ghq get
直後にcloneしたrepositoryのディレクトリ配下に移動できるようになりました。
repository ownewの補完にユーザーを使わない設定を可能に (k0kubun++)
https://github.com/motemen/ghq/pull/118
#81:When there is no slash in the argument, complement URL as $USER/repo で、 ghq get hoge
などとした時に、 https://github.com/$USER/hoge
からリポジトリを取得するようになりましたが、元の挙動のほうが好みだという意見もあり、設定で切り替えられるようになりました。
% git config --global ghq.completeUser false
上記のように、ghq.completeUser
に false
を設定しておくと、リポジトリ名をユーザー名の位置に補完してくれます。例えば、 ghq get peco
とすると https://github.com/peco/peco
を取得します。
ghq list --vcs=
(msh5++)
https://github.com/motemen/ghq/pull/155
ghq list --vcs
オプションにより、VCSによる絞り込みが可能になりました。例えば以下のように一括git gcできるので便利です。
% ghq list --full-path --vcs=git | xargs -I@ git -C @ gc --aggressive --prune=now
bazaar(shigemk2++), fossilサポート
- https://github.com/motemen/ghq/pull/87
- https://github.com/motemen/ghq/pull/98
- https://github.com/motemen/ghq/pull/153
これで、go get
が対応しているVCSをghqも一通りサポートしました。めでたい。
その他
- 依存の整理とGo Modules導入
ghq.import.<subcommand>
機能の排除- テスト追加してC0カバレッジを80%以上に
まとめ
ということで是非ご利用ください。だいぶメンテして、テストも追加されて触りやすくなっているので、pull requestもお待ちしています。
今後はもう少しテスト追加するのと、チューニングなどに取り組みたい。具体的には ghq list
をもう少し速くしたい。これはどなたか取り組んでくれても嬉しいです。