実行したコマンドをそのままコメントにしてコミットするGitのサブコマンドを作ったら便利だった

例えばRailsのジェネレーターを実行したら、実行したコマンドをそのままコミットメッセージにしてコミットしたいじゃないですか*1。これ、毎回コマンドをコピペするのが面倒なのでgit-runという雑な名前でサブコマンドを作りました。

こういう感じで動きます。

 $ git run bin/rails g model Article title:string body:string
+ eval bin/rails g model Article title:string body:string
++ bin/rails g model Article title:string body:string
Running via Spring preloader in process 85030
      invoke  active_record
      create    db/migrate/20180330085508_create_articles.rb
      create    app/models/article.rb
      invoke    rspec
      create      spec/models/article_spec.rb
      invoke      factory_bot
      create        spec/factories/articles.rb
+ git add .
++ echo bin/rails g model Article title:string body:string
+ git commit -e -v -m 'bin/rails g model Article title:string body:string'
[post-read-ui 664e3610f] bin/rails g model Article title:string body:string
 4 files changed, 23 insertions(+)
 create mode 100644 app/models/article.rb
 create mode 100644 db/migrate/20180330085508_create_articles.rb
 create mode 100644 spec/factories/articles.rb
 create mode 100644 spec/models/article_spec.rb

コミット時はエディタが立ち上げるようにしています。3行目以降に理由や経緯を書きたい場合があるので。

このようにgit run以降をコメントにしてコミットされます。

 $ git log -1
commit 664e3610f8f0f35c4b252b28a845252bf7b7f1b0 (HEAD -> master)
Author: Daisuke Fujimura <me@fujimuradaisuke.com>
Date:   Fri Mar 30 17:55:09 2018 +0900

    bin/rails g model Article title:string body:string

コマンド自体は単純です。

#! /bin/sh

set -xe

eval $@
git add .
git commit -e -v -m "$(echo $@)"

便利!

はてなブログSSLに対応したので記念に書きました。

*1:これは@amatsudaさんと一緒に仕事をしている時に教えてもらった。