Sha256: ff3c26f56d96e5753f060fbbdc3c28b1ea233aadcbc58f581a46c2c51d5b0645

Contents?: true

Size: 1.79 KB

Versions: 3

Compression:

Stored size: 1.79 KB

Contents

require File.join(File.dirname(__FILE__), '..', 'socialcast-git-extensions')
require 'grit'

module Socialcast
  module Git
    include Socialcast::Gitx

    def current_branch
      repo = Grit::Repo.new(Dir.pwd)
      Grit::Head.current(repo).name
    end
    def branches(options = {})
      branches = []
      reserved_branches = %w{ HEAD master last_known_good_master staging last_known_good_staging next_release last_known_good_next_release }
      args = []
      args << '-r' if options[:remote]
      args << '--merged' if options[:merged]
      output = `git branch #{args.join(' ')}`.split("\n")
      output.each do |branch|
        branch = branch.gsub(/\*/, '').strip.split(' ').first
        branch = branch.split('/').last if options[:remote]
        branches << branch unless reserved_branches.include?(branch)
      end
      branches
    end
    def reset_branch(branch, head_branch = 'master')
      return if branch == head_branch
      run_cmd "git checkout #{head_branch}"
      run_cmd "git pull"
      run_cmd "git branch -D #{branch}" rescue nil
      run_cmd "git push origin :#{branch}" rescue nil
      run_cmd "git checkout -b #{branch}"
      run_cmd "grb publish #{branch}"
      run_cmd "git checkout #{head_branch}"
    end

    def integrate(branch, destination_branch = 'staging')
      HighLine.say "integrating <%= color('#{branch}', :green) %> into <%= color('#{destination_branch}', :green) %>"
      run_cmd "git remote prune origin"
      unless destination_branch == 'master'
        run_cmd "git branch -D #{destination_branch}" rescue nil
        run_cmd "grb track #{destination_branch}"
      end
      run_cmd "git checkout #{destination_branch}"
      run_cmd "git pull . #{branch}"
      run_cmd "git push origin HEAD"

      run_cmd "git checkout #{branch}"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
socialcast-git-extensions-2.2.5 lib/socialcast-git-extensions/git.rb
socialcast-git-extensions-2.2.4 lib/socialcast-git-extensions/git.rb
socialcast-git-extensions-2.2.3 lib/socialcast-git-extensions/git.rb