bk fm3tool(7.3ce) BitKeeper User's Manual bk fm3tool(7.3ce)
NAME
bk fm3tool - BitKeeper three-way merge tool
SYNOPSIS
bk fm3tool [-o<filename>] [-fn] -l<local_rev> -r<remote_rev> <file>
DESCRIPTION
bk fm3tool is a three-way merge tool used for resolving conflicting
changes between two different versions of a file that have a common
ancestor. Normally fm3tool is not run from the command line; it is
started during the resolve phase of a pull by responding with "f" at
the merge prompt.
The purpose of this tool is to aid in the resolving of parallel work
that contains conflicts. A conflict is defined as one or more lines
that were added, deleted, or modified in the local version of the file,
at or adjacent to one or more lines that were added, deleted, or modi-
fied in the remote version of the file.
When the tool is started up, all of the changes that could be
automerged have been automerged. The rest of the changes are noted as
<<<<<<
UNMERGED
>>>>>>
in the merged file window (see below). The tool's default behavior is
to go to the first conflict and wait for you to merge it. Typically,
you merge that conflict, go to the next conflict, and repeat until
done. It is not necessary to merge the conflicts in order; you may
look at them all and merge them in any order. You must merge all con-
flicts, however, before you may save the file and exit.
When you are finished, you must save the file to complete the merge.
RUNNING OTHER GUI TOOLS
It might be useful to look at other information associated with the
changes. The "File" menu allows you to run several other tools:
revtool This shows you the file history with the GCA, local, and
remote versions highlighted. This is useful to see the pro-
gression of changes by selecting the GCA and then diffing down
one side and then the other side one delta at a time.
csettool May be run on the additions, deletions, or both. This can be
useful when the context needed to resolve the conflict is con-
tained elsewhere in the changeset that caused the conflict.
SCREEN LAYOUT
When bk fm3tool is started, there are six main areas on the screen.
Notice that information about the local repository is on the left and
remote repository is on the right.
+--------------------+------------------- +
| Local change info | Remote change info |
+--------------------+--------------------+
| - GCA baseline | - GCA baseline |
| + Local change | + Remote change |
| | |
+--------------------+-----+--------------+
| Merge | Information |
| | |
| | |
+--------------------------+--------------+
Local change info Revision history for the local changes to the file
Remote change info Revision history for the remote changes to the file
Local diff Diff of local file versus the greatest common ances-
tor (GCA)
Remote diff Diff of remote file versus the GCA
Merge Result of the merge
Information Informational messages and navigation controls
As the tool moves from change to change, the top two windows will
change to show revision history of the current highlighted change. The
history shown for the deleted lines corresponds to the revisions that
did the deletions. The annotation about which revisions added and
deleted lines in the files are shown by selecting View->Show Annota-
tions.
OPTIONS
-o<filename> save output to the specified file.
-f force overwrite of existing file. By default fm3tool
will not overwrite an existing merge file.
-l<local_rev> the revision in the file to be considered the most
recent local work.
-n do not write any merged output, put the tool in readonly
mode.
-r<remote_rev> the revision in the file to be considered the most
recent remote work.
HAND-EDITING
A merge conflict may be edited manually by single-clicking over a high-
lighted diff in the merge window. The merge window will then enter a
special edit mode where you can make changes. To exit the edit mode,
press <escape> or click on area that divides the merge area from the
areas above it.
COPY AND PASTE
When the tool is in edit mode, it is possible to select text from
either diff window and then copy them into the clipboard. The text
copied to the clipboard is taken from the window with the active focus.
This can include the merge window itself.
Pasting while focused in the left or right diff window will paste into
the merge window at the insertion cursor. If the current block is
UNMERGED, it will be replaced with the contents of the clipboard. Sub-
sequent pastes will be inserted after the last insertion. Pasting
while focused in the merge window itself will paste at the insertion
cursor with no special action.
KEYBOARD BINDINGS
fm3tool has two major modes: "merging mode," for navigating through the
diffs and conflicts and "editing mode," for hand-editing a merge. Each
of these modes has its own set of key bindings.
MERGING MODE
Left-Click Over a highlighted block in the upper windows, a
left-click will append the highlighted block of text
to the current merge region in the merge window.
Left-Click Over the merge window will enter hand-edit
mode. See the section on HAND EDITING, above.
Right-Click Over a highlighted block in the upper windows, a
right-click will append the single line that was
clicked on to the current merge region in the merge
window.
Shift-Left-Click Works like a left click, but replaces the contents of
the current merge rather than adding on to it.
Shift-Right-Click Works like a right click, but replaces the contents
of the current merge with the line that was clicked
on.
PageUp Scroll up one page.
PageDown Scroll down one page.
UpArrow Scroll up one line.
DownArrow Scroll down one line.
LeftArrow Scroll left.
RightArrow Scroll right.
<space> move to the next conflict.
[ Move to previous difference.
] Move to next difference.
{ Move to previous conflict.
} Move to next conflict.
- Move to first difference.
+ Move to last difference.
x Toggle the display of the GCA.
z Toggle the display of annotations.
c Clears the current merge region.
a Restores the auto-merge.
m Restores the manual merge.
s Saves the merge file.
u Will undo the effects that the last mouse click had
on the current merge region.
e This will move the focus to the merge edit window at
the bottom and put the tool in edit mode.
Control-q Exit from fm3tool.
EDITING MODE
<escape> Exit edit mode
Control-a move to start of line.
Control-e move to end of line.
Control-n move to next line.
Control-p move to previous line.
Control-d delete character under cursor.
Control-y Redo the last undone change.
Control-z Undo the last typed change.
UpArrow Move the cursor up one line.
DownArrow Move the cursor down one line.
LeftArrow Move the cursor left one character.
RightArrow Move the cursor right one character.
PageUp Scroll up one page.
PageDown Scroll down one page.
SEE ALSO
bk config-gui
bk resolving
bk smerge
bk fmtool
CATEGORY
GUI-tools
BitKeeper Inc 1E1 bk fm3tool(7.3ce)