diff options
Diffstat (limited to 'doc/en/user-guide/resolving_conflicts.txt')
-rw-r--r-- | doc/en/user-guide/resolving_conflicts.txt | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/doc/en/user-guide/resolving_conflicts.txt b/doc/en/user-guide/resolving_conflicts.txt new file mode 100644 index 0000000..ff723df --- /dev/null +++ b/doc/en/user-guide/resolving_conflicts.txt @@ -0,0 +1,83 @@ +Resolving conflicts +=================== + +Workflow +-------- + +Unlike some other tools that force you to resolve each conflict during +the merge process, Bazaar merges as much as it can and then reports the +conflicts. This can make conflict resolution easier because the contents +of the whole post-merge tree are available to help you decide how things +ought to be resolved. You may also wish to selectively run tests as you go +to confirm each resolution or group or resolutions is good. + +Listing conflicts +----------------- + +As well as being reported by the ``merge`` command, the list of outstanding +conflicts may be displayed at any time by using the ``conflicts`` +command. It is also included as part of the output from the ``status`` +command. + +Resolving a conflict +-------------------- + +When a conflict is encountered, the ``merge`` command puts embedded +markers in each file showing the areas it couldn't resolve. It also +creates 3 files for each file with a conflict: + + * foo.BASE + * foo.THIS + * foo.OTHER + +where ``foo`` is the name of the conflicted file. +In many cases, you can resolve conflicts by simply manually editing +each file in question, fixing the relevant areas and removing the +conflict markers as you go. + +After fixing all the files in conflict, and removing the markers, +ask Bazaar to mark them as resolved using the ``resolve`` command like this:: + + bzr resolve + +Alternatively, after fixing each file, you can mark it as resolved +like this:: + + bzr resolve foo + +Among other things, the ``resolve`` command cleans up the BASE, +THIS and OTHER files from your working tree. + +Using the remerge command +------------------------- + +In some cases, you may wish to try a different merge algorithm on a +given file. To do this, use the ``remerge`` command nominating +the file like this:: + + bzr remerge --weave foo + +where ``foo`` is the file and ``weave`` is one of the available +merge algorithms. This algorithm is particularly useful when a +so-called ``criss-cross`` merge is detected, e.g. when two branches +merge the same thing then merge each other. See the online help for +``criss-cross`` and ``remerge`` for further details. + +Using external tools to resolve conflicts +----------------------------------------- + +If you have a GUI tool you like using to resolve conflicts, be sure +to install the *extmerge* plugin. Once installed, it can be used +like this:: + + bzr extmerge foo + +where ``foo`` is the conflicted file. Rather than provide a list of +files to resolve, you can give the ``--all`` option to implicitly +specify all conflicted files. + +The ``extmerge`` command uses the tool specified by the +``external_merge`` setting in your ``bazaar.conf`` file. +If not set, it will look for some popular merge tools such +as ``kdiff3`` or ``opendiff``, the latter being a command +line interface to the FileMerge utility in OS X. |