おそらくはそれさえも平凡な日々

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.completeUserfalse を設定しておくと、リポジトリ名をユーザー名の位置に補完してくれます。例えば、 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サポート

これで、go get が対応しているVCSをghqも一通りサポートしました。めでたい。

その他

  • 依存の整理とGo Modules導入
  • ghq.import.<subcommand>機能の排除
  • テスト追加してC0カバレッジを80%以上に

まとめ

ということで是非ご利用ください。だいぶメンテして、テストも追加されて触りやすくなっているので、pull requestもお待ちしています。

今後はもう少しテスト追加するのと、チューニングなどに取り組みたい。具体的には ghq listをもう少し速くしたい。これはどなたか取り組んでくれても嬉しいです。

created at
last modified at

2019-05-06T03:19:43+0900

comments powered by Disqus