class GitPrettyAccept::Transaction

Attributes

branch[R]
enable_autosquash[R]
let_user_edit_message[R]

Public Class Methods

new(branch, options = {}) click to toggle source
# File lib/git_pretty_accept/transaction.rb, line 7
def initialize(branch, options = {})
  @branch = branch
  @let_user_edit_message = options[:edit]
  @enable_autosquash = options[:autosquash]
end

Public Instance Methods

call() click to toggle source
# File lib/git_pretty_accept/transaction.rb, line 31
def call
  commands.each_with_index do |command, i|
    info "\n#{command}"
    unless system(command)
      error "\nDue to the error above, " +
        "the following commands were not executed: " +
        commands[i + 1, commands.size].join("\n")
      exit!
    end
  end
end
commands() click to toggle source
# File lib/git_pretty_accept/transaction.rb, line 13
def commands
  [
    "git fetch origin",
    "git rebase origin/#{source_branch}",
    "echo 'Confirming that #{source_branch} is not ahead of origin/#{source_branch}...'",
    "test `git rev-parse HEAD` = `git rev-parse origin/#{source_branch}`",
    "git checkout #{branch}",
    "git rebase origin/#{branch}",
    "git rebase origin/#{source_branch} #{autosquash_params}",
    "git push --force origin #{branch}",
    "git checkout #{source_branch}",
    MergeCommand.new(branch, let_user_edit_message).to_s,
    "git push origin #{source_branch}",
    "git branch -d #{branch}",
    "git push origin :#{branch}"
  ]
end
source_branch() click to toggle source
# File lib/git_pretty_accept/transaction.rb, line 43
def source_branch
  return @source_branch if @source_branch
  our = Git.open('.')
  @source_branch = our.branches.find(&:current).to_s
end

Private Instance Methods

autosquash_params() click to toggle source
# File lib/git_pretty_accept/transaction.rb, line 51
def autosquash_params
  enable_autosquash ? '-i --autosquash' : ''
end