No subject


Thu Jul 23 19:07:19 BST 2009


Feedback welcome,

         Vincent


--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline; filename=description-4599.patch
Content-Description: BZR merge

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: v.ladeuil+lp at free.fr-20090813062135-mvkhie71vei48lco
# target_branch: http://bazaar.launchpad.net/~bzr/bzr/trunk
# testament_sha1: 3be971b687974080fdef496223ca9e881315931e
# timestamp: 2009-08-13 10:38:51 +0200
# base_revision_id: pqm at pqm.ubuntu.com-20090811040617-g99p5v2wsn13ww8z
# 
# Begin patch
=== added file 'Outline.txt'
--- Outline.txt	1970-01-01 00:00:00 +0000
+++ Outline.txt	2009-08-13 06:21:35 +0000
@@ -0,0 +1,186 @@
+When conflicts are present in a working tree (as shown by ``bzr
+conflicts``), the user should resolve them and then inform bzr
+that the conflicts has 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 it's the case when merging other people work
+or because some conflicts are presented in a way that is not easy
+to understand.
+
+``bzr`` try to avoid conflicts.
+
+When it can't, it add information into the working tree to
+present the conflicting versions and leave the resolution to the
+user.
+
+Whatever the conflict is, resolving it is roughly done in two steps:
+
+- modify the working tree content so that the conflicted item is
+  now in the desired state, there are,
+
+- inform bzr 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 type
+of conflicts, bzr itself already made a choice when possible.
+
+Yet, whether bzr made a choice or not, there are some other ways
+simple but alternative ways to resolve the conflict.
+
+Providing the ``--interactive`` option to ``bzr resolve`` will
+display a short explanation of the conflict and propose some
+actions before marking the file as resolved.
+
+Text conflicts:
+---------------
+
+3 ways:
+- force THIS
+- force OTHER
+- manually solve each conflicted region
+
+resolve:
+- delete .THIS, .OTHER, .BASE  if present
+
+Content conflicts:
+------------------
+
+3 ways:
+- bzr mv .THIS <item>,
+- bzr mv .OTHER <item>,
+- manually combine .THIS and .OTHER
+
+resolve:
+- delete .THIS, .OTHER, .BASE if present
+
+
+Duplicate paths
+---------------
+
+bzr made a choice
+
+3 ways:
+- bzr mv .moved <item> (refuse bzr choice)
+- bzr rm .moved (accept bzr choice)
+- manually combine <item> and .moved
+
+resolve:
+- delete .moved if still present ? (not done so far ?)
+
+
+Unversioned parent
+------------------
+
+bzr made a choice: version the parent
+
+3 ways:
+- bzr rm <children>
+- bzr rm <parent>
+- manually rename <children>
+
+resolve:
+- nothing to do ?
+
+XXX: need investigation to enumerate all cases
+
+
+Missing parent
+--------------
+
+bzr made a choice: create the missing parent and version it.
+
+3 ways:
+- bzr rm <children>
+- bzr rm <parent>
+- manually rename <children>
+
+resolve:
+- nothing to do ?
+
+XXX: need investigation to enumerate all cases
+
+
+Deleting parent
+---------------
+
+bzr made a choice: not delete the parent
+
+3 ways:
+- bzr rm <children>
+- bzr rm <parent>
+- manually solve the issue (may be more than a single children)
+
+resolve:
+- nothing to do
+
+
+Path conflict
+-------------
+
+bzr made a choice: use the source's name
+
+3 ways:
+- do nothing (accept bzr choice)
+- bzr mv <item> other-name (refuse bzr choice)
+- manually rename to a different name
+
+resolve:
+- nothing to do 
+
+Parent loop
+-----------
+
+bzr made a choice: keep the existing renaming
+
+3 ways:
+- do nothing (accept bzr choice)
+- bzr mv this_parent/this_children other_parent/other_children
+- manually rename the items
+
+resolve:
+- nothing to do
+
+
+Non-directory parent
+--------------------
+
+bzr made a choice: create a <parent>.new directory
+
+There is no obvious single action that can solve the conflict
+here, but let's try anyway.
+
+3 ways:
+- bzr rm <parent>.new
+- bzr rm <parent> + bzr mv <parent>.new <parent>
+- manually rename the items
+
+resolve:
+- nothing to do
+
+Design:
+=======
+
+The Conflict classes will receive additional methods to resolve
+the conflict in alternative ways.
+
+Resolve will receive a ``--interactive`` option and present a
+list of possible actions (including do nothing) to the user
+before marking the file as resolved.
+
+It should be possible for a GUI to query the conflict objects for
+possible actions (in textual form) and trigger them.
+
+TODO:
+
+- add more info to Conflict objects:
+  - 
+  - base revid for text conflict
+
+- tests with '.diverted' files ?
+
+- doc/es/user-guide/resolving_conflicts.txt is really
+  use-reference/resolving_conflicts.txt
+

=== modified file 'bzrlib/conflicts.py'
--- bzrlib/conflicts.py	2009-03-23 14:59:43 +0000
+++ bzrlib/conflicts.py	2009-08-13 06:19:32 +0000
@@ -480,7 +480,7 @@
 
 
 class UnversionedParent(HandledConflict):
-    """An attempt to version an file whose parent directory is not versioned.
+    """An attempt to version a file whose parent directory is not versioned.
     Typically, the result of a merge where one tree unversioned the directory
     and the other added a versioned file to it.
     """

=== modified file 'bzrlib/help_topics/en/conflicts.txt'
--- bzrlib/help_topics/en/conflicts.txt	2007-12-25 04:17:50 +0000
+++ bzrlib/help_topics/en/conflicts.txt	2009-08-13 06:19:32 +0000
@@ -181,7 +181,7 @@
   Conflict: FILE.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 othe side
+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

# Begin bundle
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
w/RNzesPPA0Qg/+LuSKcKEgbEb8SAA==

--=-=-=--



More information about the bazaar mailing list