class FlashFlow::BranchMerger
Attributes
conflict_sha[R]
resolutions[R]
result[R]
Public Class Methods
new(git, branch)
click to toggle source
# File lib/flash_flow/branch_merger.rb, line 6 def initialize(git, branch) @git = git @branch = branch end
Public Instance Methods
do_merge(rerere_forget)
click to toggle source
# File lib/flash_flow/branch_merger.rb, line 11 def do_merge(rerere_forget) if sha.nil? @result = :deleted return end @git.run("merge --no-ff #{@git.remote}/#{@branch.ref}") if @git.last_success? || try_rerere(rerere_forget) @result = :success else @conflict_sha = merge_rollback @result = :conflict end end
sha()
click to toggle source
# File lib/flash_flow/branch_merger.rb, line 27 def sha @sha if defined?(@sha) @sha = get_sha end
Private Instance Methods
get_sha()
click to toggle source
# File lib/flash_flow/branch_merger.rb, line 43 def get_sha @git.run("rev-parse #{@git.remote}/#{@branch.ref}") @git.last_stdout.strip if @git.last_success? end
merge_rollback()
click to toggle source
# File lib/flash_flow/branch_merger.rb, line 48 def merge_rollback @git.run("reset --hard HEAD") @git.run("rev-parse HEAD") @git.last_stdout.strip end
try_rerere(rerere_forget)
click to toggle source
# File lib/flash_flow/branch_merger.rb, line 34 def try_rerere(rerere_forget) if rerere_forget @git.run('rerere forget') false else @resolutions = @git.rerere_resolve! end end