git-gsubがライフチェンジングだったのでgit-gsub-filesを作った

Gitで何かの仕方を検索していて、いまさらながら git-gsub を知りました。

fujimura.hatenablog.com

gemとして公開されており、カジュアルにインストールできてめちゃくちゃ便利です。

となると気になるのが git-rename 。おそらく想像するにファイル名の便利置換コマンド。ファイル名の置換もよくあるので、こちらも是非使いたいなと思いました。

が、gemとして公開されていなかったので、git-gsub を参考に git-gsub-files を作ってみました。

github.com

簡単にいうと、Gitで管理されているファイルのリネーム( mv )を gsub ライクにするためのGitサブコマンドです。

インストール

$ git install git-gsub-files

使い方

Gitの管理下のファイルに対して、ファイル名をgsubライクに置換して mv します。 置換対象はファイル名だけでディレクトリ名には影響しません。

$ git gsub-files READ WRITE
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

deleted:    README.md

Untracked files:
(use "git add <file>..." to include in what will be committed)

WRITEME.md

no changes added to commit (use "git add" and/or "git commit -a")

せっかくGitなので、mv ではなくて git mv したいこともあります。そのときは --add オプションを使います。

$ git gsub-files READ WRITE --add
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

renamed:    README.md -> WRITEME.md

no changes added to commit (use "git add" and/or "git commit -a")

と、ここまで作って本家が公開されていました。。。

想像していた動きとは少し違っていたので、まあgit-gsub-filesを作った意味はあったかもです。

Thor人間だったのに、Thor使わないでコマンド作ったり、Rspecの書き方を git-gsub のテストを見ながら学んだり、俺得でした。

最後に

git-gsubという便利コマンドを公開してくださった fujimura さんありがとうございます!