summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 4578c5c)
raw | patch | inline | side by side (parent: 4578c5c)
author | Shawn O. Pearce <spearce@spearce.org> | |
Fri, 20 Jul 2007 06:13:24 +0000 (02:13 -0400) | ||
committer | Shawn O. Pearce <spearce@spearce.org> | |
Sat, 21 Jul 2007 09:00:36 +0000 (05:00 -0400) |
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>
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>
lib/checkout_op.tcl | patch | blob | history |
diff --git a/lib/checkout_op.tcl b/lib/checkout_op.tcl
index 00a994be120edaa1024733cb94e3f1fe4e494039..262dc96895aa76a6930e98719533a61771775723 100644 (file)
--- a/lib/checkout_op.tcl
+++ b/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"