Gitのサブコマンドを、作成する

「git mine merged <マージ済みのブランチ名>」という Git のサブコマンドを作成してみます。このコマンドは、マージ済みのブランチ名を指定して、ブランチの名前にmergedをつけるという単純なものです。これは Git のサブコマンドを高速に作れるようになるための練習です。
といっても、以下の内容の「git-mine」という名前でパスの通ったところに配置するだけです。Git のサブコマンドの場合、ファイル名はかならず git- のプレフィックにします。簡単ですね。

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require "rubygems"
require "thor"

class GitMine < Thor
  include Thor::Actions

  desc "merged BRANCH_NAME", "rename a branch name, 'name' -> 'merged/name' in Git"
  def merged(branch_name)
    if `git branch`.strip.split(/\s+/).grep(branch_name).empty?
      say "error: not exist branch #{branch_name}"
      return 1
    end
    cmd = "git branch -M #{branch_name} merged/#{branch_name}"
    run cmd
  end
end

GitMine.start

それで、これからサブコマンドが必要になったら、上記の GitMine を修正して、以下のような記述を追加すれば OK になります。簡単ですね。

  desc "special", "special command!!"
  def special
    say "This is a very special command!!"
  end

これで Git のサブコマンドを高速に作成できるようになりました。

--- 参考URL

--- PR広告
記事を読んでくださり、ありがとうございます。もしよろしければ、この記事の著者が提供している無料のサービス「かくってる?」をお試しください。