Commits

Shawn O. Pearce  committed f66b8a6

git-gui: Factor out common fast-forward merge case

In both the ff and reset merge_types supported by checkout_op the
result is the same if the merge base of our target commit and the
existing commit is the existing commit: its a fast-forward as the
existing commit is fully contained in the target commit.

This minor cleanup in logic will make it easier to implement a
new kind of merge_type that actually merges the two trees with a
real merge strategy, such as git-merge-recursive.

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

  • Participants
  • Parent commits 60f7352

Comments (0)

Files changed (1)

File lib/checkout_op.tcl

 		#
 	} else {
 		catch {set merge_base [git merge-base $new $cur]}
-		switch -- $merge_type {
-		ff {
-			if {$merge_base eq $new} {
-				# The current branch is actually newer.
-				#
-				set new $cur
-			} elseif {$merge_base eq $cur} {
-				# The current branch is older.
-				#
-				set reflog_msg "merge $new_expr: Fast-forward"
-			} else {
-				_error $this "Branch '$newbranch' already exists.\n\nIt cannot fast-forward to $new_expr.\nA merge is required."
-				return 0
+		if {$merge_base eq $cur} {
+			# The current branch is older.
+			#
+			set reflog_msg "merge $new_expr: Fast-forward"
+		} else {
+			switch -- $merge_type {
+			ff {
+				if {$merge_base eq $new} {
+					# The current branch is actually newer.
+					#
+					set new $cur
+				} else {
+					_error $this "Branch '$newbranch' already exists.\n\nIt cannot fast-forward to $new_expr.\nA merge is required."
+					return 0
+				}
 			}
-		}
-		reset {
-			if {$merge_base eq $cur} {
-				# The current branch is older.
-				#
-				set reflog_msg "merge $new_expr: Fast-forward"
-			} else {
+			reset {
 				# The current branch will lose things.
 				#
 				if {[_confirm_reset $this $cur]} {
 					return 0
 				}
 			}
-		}
-		default {
-			_error $this "Only 'ff' and 'reset' merge is currently supported."
-			return 0
-		}
+			default {
+				_error $this "Only 'ff' and 'reset' merge is currently supported."
+				return 0
+			}
+			}
 		}
 	}