Sha256: 97a1a171c49018ab8749efc305fdc0d836c8cc46e919ff6982f8e2f1f596404f

Contents?: true

Size: 1.78 KB

Versions: 3

Compression:

Stored size: 1.78 KB

Contents

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

module Socialcast
  module Git
    include Socialcast::Gitx
    RESERVED_BRANCHES = %w{ HEAD master last_known_good_master staging last_known_good_staging next_release last_known_good_next_release }

    def current_branch
      repo = Grit::Repo.new(Dir.pwd)
      Grit::Head.current(repo).name
    end
    def branches(options = {})
      branches = []
      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.8 lib/socialcast-git-extensions/git.rb
socialcast-git-extensions-2.2.7 lib/socialcast-git-extensions/git.rb
socialcast-git-extensions-2.2.6 lib/socialcast-git-extensions/git.rb