The conflicts set of commands is used to specify conflict resolutions for merges, asynchronously from the merge command itself. This lets the user take as much time as needed to prepare all the conflict resolutions, and avoids losing work when a merge is aborted due to a complicated conflict.
These commands require a workspace, to provide a place to store the conflicts and user resolution files.
For all of these commands, if the --conflicts-file option is not given, the file _MTN/conflicts is used. If the --conflicts-file option is given, the file must be in the bookkeeping directory.
Files given in these commands are relative to the current working directory, or absolute. In the conflict file, they are relative to the workspace root, or absolute.
If left_rev_id and right_rev_id are not given, the first two heads that the merge command would merge are used.
The conflicts file format is as output by the automate show_conflicts command; see See Automation.
Content conflicts that can be resolved by the internal line merger
have resolutions, so they will not show up in subsequent
show_first commands.
For single file conflicts, there are several possible resolutions:
merge3
hook is called to allow the user to manually
merge the left and right files, leaving the result in the specified file.
file must be a bookkeeping path; under _MTN.
This inserts a resolved_user_left file conflict resolution in the
conflicts file.
This inserts a resolved_user_left file conflict resolution in the
conflicts file.
This inserts a resolved_drop_left conflict resolution in the
conflicts file.
This inserts a resolved_rename_left filename conflict resolution in the conflicts file.
For two file conflicts, the possible resolutions are:
This inserts a resolved_drop_left or resolved_drop_right
conflict resolution in the conflicts file.
This inserts a resolved_keep_left or resolved_keep_right
conflict resolution in the conflicts file.
This inserts a resolved_rename_left filename or
resolved_rename_right filename conflict resolution in the
conflicts file.
This inserts a resolved_user_left file or resolved_user_right file conflict resolution in the conflicts file.
monotone internals note: we don't provide an interactive
resolution for two-file conflicts, because monotone currently does not
provide a merge2
Lua hook. two-file conflicts don't have a
shared ancestor, so merge3
is not applicable.