Commits

Anonymous committed 60f7352

git-gui: Save the merge base during checkout_op processing

I've decided to teach checkout_op how to perform more than just a
fast-forward and reset type of merge. This way we can also do a full
recursive merge even when we are recreating an existing branch from
a remote. To help with that process I'm saving the merge-base we
computed during the ff/reset/fail decision process, in case we need
it later on when we actually start a true merge operation.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Comments (0)

Files changed (1)

lib/checkout_op.tcl

 
 field parent_w      .; # window that started us
 field merge_type none; # type of merge to apply to existing branch
+field merge_base   {}; # merge base if we have another ref involved
 field fetch_spec   {}; # refetch tracking branch if used?
 field checkout      1; # actually checkout the branch?
 field create        0; # create the branch if it doesn't exist?
 		# No merge would be required, don't compute anything.
 		#
 	} else {
-		set mrb {}
-		catch {set mrb [git merge-base $new $cur]}
+		catch {set merge_base [git merge-base $new $cur]}
 		switch -- $merge_type {
 		ff {
-			if {$mrb eq $new} {
+			if {$merge_base eq $new} {
 				# The current branch is actually newer.
 				#
 				set new $cur
-			} elseif {$mrb eq $cur} {
+			} elseif {$merge_base eq $cur} {
 				# The current branch is older.
 				#
 				set reflog_msg "merge $new_expr: Fast-forward"
 			}
 		}
 		reset {
-			if {$mrb eq $cur} {
+			if {$merge_base eq $cur} {
 				# The current branch is older.
 				#
 				set reflog_msg "merge $new_expr: Fast-forward"