summaryrefslogtreecommitdiff
path: root/bzrlib/help_topics/en/conflict-types.txt
diff options
context:
space:
mode:
Diffstat (limited to 'bzrlib/help_topics/en/conflict-types.txt')
-rw-r--r--bzrlib/help_topics/en/conflict-types.txt377
1 files changed, 377 insertions, 0 deletions
diff --git a/bzrlib/help_topics/en/conflict-types.txt b/bzrlib/help_topics/en/conflict-types.txt
new file mode 100644
index 0000000..7fe037c
--- /dev/null
+++ b/bzrlib/help_topics/en/conflict-types.txt
@@ -0,0 +1,377 @@
+Conflict Types
+==============
+
+Some operations, like merge, revert and pull, modify the contents of your
+working tree. These modifications are programmatically generated, and so they
+may conflict with the current state of your working tree.
+
+When conflicts are present in your working tree (as shown by ``bzr
+conflicts``), you should resolve them and then inform bzr that the conflicts
+have been resolved.
+
+Resolving conflicts is sometimes not obvious. Either because the user that
+should resolve them is not the one responsible for their occurrence, as is the
+case when merging other people's work or because some conflicts are presented
+in a way that is not easy to understand.
+
+Bazaar tries to avoid conflicts ; its aim is to ask you to resolve the
+conflict if and only if there's an actual conceptual conflict in the source
+tree. Because Bazaar doesn't understand the real meaning of the files being
+versioned, it can, when faced with ambiguities, fall short in either direction
+trying to resolve the conflict itself. Many kinds of changes can be combined
+programmatically, but sometimes only a human can determine the right thing to
+do.
+
+When Bazaar generates a conflict, it adds information into the working tree to
+present the conflicting versions, and it's up to you to find the correct
+resolution.
+
+Whatever the conflict is, resolving it is roughly done in two steps:
+
+1. Modify the working tree content so that the conflicted item is now in the
+ state you want to keep, then
+
+2. Inform Bazaar that the conflict is now solved and ask to cleanup any
+ remaining generated information (``bzr resolve <item>``).
+
+For most conflict types, there are some obvious ways to modify the working
+tree and put it into the desired state. For some types of conflicts, Bazaar
+itself already made a choice, when possible.
+
+Yet, whether Bazaar makes a choice or not, there are some other simple but
+different ways to resolve the conflict.
+
+Each type of conflict is explained below, and the action which must be done to
+resolve the conflict is outlined.
+
+Various actions are available depending on the kind of conflict, for some of
+these actions, Bazaar can provide some help. In the end you should at least
+inform Bazaar that you're done with the conflict with::
+
+ ``bzr resolve FILE --action=done'
+
+Note that this is the default action when a single file is involved so you can
+simply use::
+
+ ``bzr resolve FILE``
+
+See ``bzr help resolve`` for more details.
+
+Text conflicts
+--------------
+
+Typical message::
+
+ Text conflict in FILE
+
+These are produced when a text merge cannot completely reconcile two sets of
+text changes. Bazaar will emit files for each version with the extensions
+THIS, OTHER, and BASE. THIS is the version of the file from the target tree,
+i.e. the tree that you are merging changes into. OTHER is the version that you
+are merging into the target. BASE is an older version that is used as a basis
+for comparison.
+
+In the main copy of the file, Bazaar will include all the changes that it
+could reconcile, and any un-reconciled conflicts are surrounded by
+"herringbone" markers like ``<<<<<<<``.
+
+Say the initial text is "The project leader released it.", and THIS modifies it
+to "Martin Pool released it.", while OTHER modifies it to "The project leader
+released Bazaar." A conflict would look like this::
+
+ <<<<<<< TREE
+ Martin Pool released it.
+ =======
+ The project leader released Bazaar.
+ >>>>>>> MERGE-SOURCE
+
+The correct resolution would be "Martin Pool released Bazaar."
+
+You can handle text conflicts either by editing the main copy of the file,
+or by invoking external tools on the THIS, OTHER and BASE versions. It's
+worth mentioning that resolving text conflicts rarely involves picking one
+set of changes over the other (but see below when you encounter these
+cases). More often, the two sets of changes must be intelligently combined.
+
+If you edit the main copy, be sure to remove the herringbone markers. When
+you are done editing, the file should look like it never had a conflict, and be
+ready to commit.
+
+When you have resolved text conflicts, just run ``bzr resolve --auto``, and
+Bazaar will auto-detect which conflicts you have resolved.
+
+When the conflict is resolved, Bazaar deletes the previously generated
+``.BASE``, ``.THIS`` and ``.OTHER`` files if they are still present in the
+working tree.
+
+
+When you want to pick one set of changes over the other, you can use ``bzr
+resolve`` with one of the following actions:
+
+* ``--action=take-this`` will issue ``mv FILE.THIS FILE``,
+* ``--action=take-other`` will issue ``mv FILE.OTHER FILE``.
+
+Note that if you have modified ``FILE.THIS`` or ``FILE.OTHER``, these
+modifications will be taken into account.
+
+Content conflicts
+-----------------
+
+Typical message::
+
+ Contents conflict in FILE
+
+This conflict happens when there are conflicting changes in the working tree
+and the merge source, but the conflicted items are not text files. They may
+be binary files, or symlinks, or directories. It can even happen with files
+that are deleted on one side, and modified on the other.
+
+Like text conflicts, Bazaar will emit THIS, OTHER and BASE files. (They may be
+regular files, symlinks or directories). But it will not include a "main copy"
+of the file with herringbone conflict markers. It will appear that the "main
+copy" has been renamed to THIS or OTHER.
+
+To resolve that kind of conflict, you should rebuild FILE from either version
+or a combination of both.
+
+``bzr resolve`` recognizes the following actions:
+
+* ``--action=take-this`` will issue ``bzr mv FILE.THIS FILE``,
+* ``--action=take-other`` will issue ``bzr mv FILE.OTHER FILE``,
+* ``--action=done`` will just mark the conflict as resolved.
+
+Any action will also delete the previously generated ``.BASE``, ``.THIS`` and
+``.OTHER`` files if they are still present in the working tree.
+
+Bazaar cannot auto-detect when conflicts of this kind have been resolved.
+
+Tag conflicts
+-------------
+
+Typical message::
+
+ Conflicting tags:
+ version-0.1
+
+When pulling from or pushing to another branch, Bazaar informs you about tags
+that conflict between the two branches; that is the same tag points to two
+different revisions. You need not resolve these conflicts, but subsequent
+uses of pull or push will result in the same message.
+
+To resolve the conflict, you must apply the correct tags to either the target
+branch or the source branch as appropriate. Use "bzr tags --show-ids -d
+SOURCE_URL" to see the tags in the source branch. If you want to make the
+target branch's tags match the source branch, then in the target branch do
+``bzr tag --force -r revid:REVISION_ID CONFLICTING_TAG`` for each of the
+CONFLICTING_TAGs, where REVISION_ID comes from the list of tags in the source
+branch. You need not call "bzr resolve" after doing this. To resolve in
+favor of the target branch, you need to similarly use ``tag --force`` in the
+source branch. (Note that pulling or pushing using --overwrite will overwrite
+all tags as well.)
+
+Duplicate paths
+---------------
+
+Typical message::
+
+ Conflict adding file FILE. Moved existing file to FILE.moved.
+
+Sometimes Bazaar will attempt to create a file using a pathname that has
+already been used. The existing file will be renamed to "FILE.moved".
+
+To resolve that kind of conflict, you should rebuild FILE from either version
+or a combination of both.
+
+``bzr resolve`` recognizes the following actions:
+
+* ``--action=take-this`` will issue ``bzr rm FILE ; bzr mv FILE.moved FILE``,
+* ``--action=take-other`` will issue ``bzr rm FILE.moved``,
+* ``--action=done`` will just mark the conflict as resolved.
+
+Note that you must get rid of FILE.moved before using ``--action=done``.
+
+Bazaar cannot auto-detect when conflicts of this kind have been resolved.
+
+Unversioned parent
+------------------
+
+Typical message::
+
+ Conflict because FILE is not versioned, but has versioned children.
+
+Sometimes Bazaar will attempt to create a file whose parent directory is not
+versioned. This happens when the directory has been deleted in the target,
+but has a new child in the source, or vice versa. In this situation, Bazaar
+will version the parent directory as well. Resolving this issue depends
+very much on the particular scenario. You may wish to rename or delete either
+the file or the directory. When you are satisfied, you can run "bzr resolve
+FILE" to mark the conflict as resolved.
+
+Missing parent
+--------------
+
+Typical message::
+
+ Conflict adding files to FILE. Created directory.
+
+This happens when a directory has been deleted in the target, but has new
+children in the source. This is similar to the "unversioned parent" conflict,
+except that the parent directory does not *exist*, instead of just being
+unversioned. In this situation, Bazaar will create the missing parent.
+Resolving this issue depends very much on the particular scenario.
+
+To resolve that kind of conflict, you should either remove or rename the
+children or the directory or a combination of both.
+
+``bzr resolve`` recognizes the following actions:
+
+* ``--action=take-this`` will issue ``bzr rm directory`` including the
+ children,
+* ``--action=take-other`` will acknowledge Bazaar choice to keep the children
+ and restoring the directory,
+* ``--action=done`` will just mark the conflict as resolved.
+
+Bazaar cannot auto-detect when conflicts of this kind have been resolved.
+
+Deleting parent
+---------------
+
+Typical message::
+
+ Conflict: can't delete DIR because it is not empty. Not deleting.
+
+This is the opposite of "missing parent". A directory is deleted in the
+source, but has new children in the target (either because a directory
+deletion is merged or because the merge introduce new children). Bazaar
+will retain the directory. Resolving this issue depends very much on the
+particular scenario.
+
+To resolve that kind of conflict, you should either remove or rename the
+children or the directory or a combination of both.
+
+``bzr resolve`` recognizes the following actions:
+
+* ``--action=take-this`` will acknowledge Bazaar choice to keep the directory,
+
+* ``--action=take-other`` will issue ``bzr rm directory`` including the
+ children,
+
+* ``--action=done`` will just mark the conflict as resolved.
+
+Note that when merging a directory deletion, if unversioned files are
+present, they become potential orphans has they don't have a directory
+parent anymore.
+
+Handling such orphans, *before* the conflict is created, is controlled by
+setting the ``bzr.transform.orphan_policy`` configuration option.
+
+There are two possible values for this option:
+
+* ``conflict`` (the default): will leave the orphans in place and
+ generate a conflicts,
+
+* ``move``: will move the orphans to a ``bzr-orphans`` directory at the root
+ of the working tree with names like ``<file>.~#~``.
+
+Bazaar cannot auto-detect when conflicts of this kind have been resolved.
+
+Path conflict
+-------------
+
+Typical message::
+
+ Path conflict: PATH1 / PATH2
+
+This happens when the source and target have each modified the name or parent
+directory of a file. Bazaar will use the path elements from the source.
+
+To resolve that kind of conflict, you just have to decide what name should be
+retained for the file involved.
+
+``bzr resolve`` recognizes the following actions:
+
+* ``--action=take-this`` will revert Bazaar choice and keep ``PATH1`` by
+ issuing ``bzr mv PATH2 PATH1``,
+* ``--action=take-other`` will acknowledge Bazaar choice of keeping ``PATH2``,
+* ``--action=done`` will just mark the conflict as resolved.
+
+Bazaar cannot auto-detect when conflicts of this kind have been resolved.
+
+Parent loop
+-----------
+
+Typical message::
+
+ Conflict moving FILE into DIRECTORY. Cancelled move.
+
+This happens when the source and the target have each moved directories, so
+that, if the change could be applied, a directory would be contained by itself.
+For example::
+
+ $ bzr init
+ $ bzr mkdir white
+ $ bzr mkdir black
+ $ bzr commit -m "BASE"
+ $ bzr branch . ../other
+ $ bzr mv white black
+ $ bzr commit -m "THIS"
+ $ bzr mv ../other/black ../other/white
+ $ bzr commit ../other -m "OTHER"
+ $ bzr merge ../other
+
+In this situation, Bazaar will cancel the move, and leave ``white`` in
+``black``. To resolve that kind of conflict, you just have to decide what
+name should be retained for the directories involved.
+
+``bzr resolve`` recognizes the following actions:
+
+* ``--action=take-this`` will acknowledge Bazaar choice of leaving ``white``
+ in ``black``,
+* ``--action=take-other`` will revert Bazaar choice and move ``black`` in
+ ``white`` by issuing ``bzr mv black/white white ; bzr mv black white``,
+* ``--action=done`` will just mark the conflict as resolved.
+
+Bazaar cannot auto-detect when conflicts of this kind have been resolved.
+
+Non-directory parent
+--------------------
+
+Typical message::
+
+ Conflict: foo.new is not a directory, but has files in it.
+ Created directory.
+
+This happens when one side has added files to a directory, and the other side
+has changed the directory into a file or symlink. For example::
+
+ $ bzr init
+ $ bzr mkdir foo
+ $ bzr commit -m "BASE"
+ $ bzr branch . ../other
+ $ rmdir foo
+ $ touch foo
+ $ bzr commit -m "THIS"
+ $ bzr mkdir ../other/foo/bar
+ $ bzr commit ../other -m "OTHER"
+ $ bzr merge ../other
+
+To resolve that kind of conflict, you have to decide what name should be
+retained for the file, directory or symlink involved.
+
+``bzr resolve`` recognizes the following actions:
+
+* ``--action=take-this`` will issue ``bzr rm --force foo.new`` and
+ ``bzr add foo``,
+* ``--action=take-other`` will issue ``bzr rm --force foo`` and
+ ``bzr mv foo.new foo``,
+* ``--action=done`` will just mark the conflict as resolved.
+
+Bazaar cannot auto-detect when conflicts of this kind have been resolved.
+
+MalformedTransform
+------------------
+
+It is possible (though very rare) for Bazaar to raise a MalformedTransform
+exception. This means that Bazaar encountered a filesystem conflict that it was
+unable to resolve. This usually indicates a bug. Please let us know if you
+encounter this. Our bug tracker is at https://launchpad.net/bzr/+bugs