Git

2015-10-10, git

リポジトリの状態チェック

運用環境への配備は、特定のブランチでのみ実行したいとか最新の修正が取り込まれているか、とか色々調べておきたいですよね。そういう場合に使えそうなコマンドをモジュールにまとめてみました。

# Rake tasks and functions for git.
module Git
  # Get current branch name.
  def self.branch
    `git branch | sed -e '/^[^*]/d' -e 's/* \\(.*\\)/\\1/'`.strip
  end

  # Check if current branch is same as the param.
  def self.branch?(name)
    b = branch
    if b == name
      return true
    else
      return false
    end
  end

  UP_TO_DATE = 0
  NEED_TO_PULL = 1
  NEED_TO_PUSH = 2
  DIVERGED = 3

  # Returns remote status.
  # For example, if the repo is up-to-date, returns 0.
  def self.remote_status
    local = `git rev-parse @`.strip
    remote = `git rev-parse @{u}`.strip
    base = `git merge-base @ @{u}`.strip

    if local == remote
      return UP_TO_DATE
    elsif local == base
      return NEED_TO_PULL
    elsif remote == base
      return NEED_TO_PUSH
    else
      return DIVERGED
    end
  end

  # Check if the repo is up-to-date.
  def self.up_to_date?
    return remote_status == UP_TO_DATE
  end
end

Rakefileで使用する場合は以下のように組み込むと良いでしょう。

Rakefile
import 'lib/tasks/git.rake'

参考URL

この記事は役に立ちましたか?