rbenv には rbenv-update というプラグインがあって、アップデートだけは簡単にできるのに、 他の git の操作をまとめて実行するのが面倒なので、 まとめて実行できる rbenv-git というプラグインを作りました。

それから anyenv の方でもすべての **env も含めてアップデートできると便利だと思い、 anyenv-updateanyenv-git を作成しました。

インストール

それぞれ plugins のディレクトリの中に git clone でとってくるだけです。

  • git clone https://github.com/znz/rbenv-git.git $(rbenv root)/plugins/rbenv-git
  • git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
  • git clone https://github.com/znz/anyenv-git.git $(anyenv root)/plugins/anyenv-git

README の方には mkdir -p $(anyenv root)/plugins も書いていますが、 git version 1.8.4.3 だと不要で、自動で親ディレクトリも作ってくれるようです。 git のどのバージョンからなのかわからないので、 README には mkdir -p を残しています。

使い方

rbenv git

rbenvrbenv のプラグインの git 操作をまとめて実行できます。

rbenv git pullrbenv update の代用が出来ます。 rbenv update だと rbenv 自体を homebrew で入れている時にも RBENV_ROOTgit コマンドを実行してしまいますが、 rbenv git なら大丈夫です。

rbenv git gc で cleanup も出来ます。

rbenv git remote -v でどこからとってきたのか確認したり、 rbenv git status でローカルで何か変更しているかどうか確認したりも出来ます。

anyenv update

anyenv update

  • anyenv
  • anyenv のプラグイン
  • **env
  • **env のプラグイン

がアップデートできます。

git 管理ではないものは skip します。

anyenv git

rbenv git と同様の操作が anyenv update と同様の対象に まとめて実行できます。

  • anyenv git pull
  • anyenv git gc
  • anyenv git remote -v
  • anyenv git status

など、 git の各種操作ができます。

裏話

最初は rbenv update のコードを fork しようとしていたのですが、 ライセンスが明記されていなかったので止めて、 他の MIT License と明示されているプラグインを主に参考にして作りました。 他にも set -eo pipefail というのは dokku を参考にしました。

ライセンスが不明だと参考にするのにも困るので、 github のレポジトリを作成する時の LICENSE ファイルそのままだけでも良いので、 どういうライセンスにしたいのか明記されているとありがたいと思いました。

追記

rbenv update だと git pull ではなく、毎回

    git checkout master
    git fetch origin
    git pull origin master

を実行していて遅いというのも rbenv git などを作った理由のひとつというのを 書き忘れていたので、追記しておきます。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published