9
https://bugs.edge.launchpad.net/bzr/+bug/414589
11
https://bugs.edge.launchpad.net/bzr/+bug/236724
12
https://bugs.edge.launchpad.net/bzr/+bug/228506
13
https://bugs.edge.launchpad.net/bzr/+bug/113809
14
https://bugs.edge.launchpad.net/bzr/+bug/322767
15
https://bugs.edge.launchpad.net/bzr/+bug/416903
16
https://bugs.edge.launchpad.net/bzr/+bug/355964
18
https://bugs.edge.launchpad.net/bzr/+bug/257297
19
https://bugs.edge.launchpad.net/bzr/+bug/232512
21
https://bugs.edge.launchpad.net/bzr/+bug/405264
27
- add more info to Conflict objects:
28
- base revid for text conflict
29
- this requires a format bump ?
31
- tests with '.diverted' files ?
33
- doc/es/user-guide/resolving_conflicts.txt is really
34
user-reference/resolving_conflicts.txt
40
When conflicts are present in a working tree (as shown by ``bzr
41
conflicts``), the user should resolve them and then inform bzr
42
that the conflicts has been resolved.
44
Resolving conflicts is sometimes not obvious. Either because the
45
user that should resolve them is not the one responsible for
46
their occurrence, as is the case when merging other people work
47
or because some conflicts are presented in a way that is not easy
50
``bzr`` try to avoid conflicts, its aim is to ask the user to
51
resolve the conflict if and only if there's an actual conceptual
52
conflict in the source tree. Because bzr doesn't understand the
53
real meaning of the files being versioned it can fall short in
54
either direction trying to resolve the conflict itself when faced
57
When it can't resolve, bzr add information into the working tree
58
to present the conflicting versions and leave the resolution to
61
Whatever the conflict is, resolving it is roughly done in two steps:
63
- modify the working tree content so that the conflicted item is
64
now in the desired state, there are,
66
- inform bzr that the conflict is now solved and ask to cleanup
67
any remaining generated information (``bzr resolve <item>``).
70
For most conflict types, there are some obvious ways to modify
71
the working tree and put it into the desired state. For some type
72
of conflicts, bzr itself already made a choice when possible.
74
Yet, whether bzr made a choice or not, there are some other ways
75
simple but alternative ways to resolve the conflict.
77
Providing the ``--interactive`` option to ``bzr resolve`` will
78
display a short explanation of the conflict and propose some
79
actions before marking the file as resolved.
85
The Conflict classes will receive additional methods to resolve
86
the conflict in alternative ways.
88
Resolve will receive a ``--interactive`` option and present a
89
list of possible actions (including do nothing) to the user
90
before marking the file as resolved.
92
The --all and file* parameters will still be honored so that the
93
user solve conflicts at his own pace.
95
It should be possible for a GUI to query the conflict objects for
96
possible actions (in textual form) and trigger them.
99
Proposed actions by conflict type:
100
==================================
102
The following paragraphs list all the existing conflict types and summarize:
103
- the actions that can be proposed to the user,
104
- the cleanups that could remain to be done once the conflict is solved,
106
In practice, the actions will always contain:
107
- leave the user solve the conflict by its own means,
108
- mark the conflict as solved without any additional action.
115
- force THIS (for all conflicted regions)
116
- force OTHER (for all conflicted regions)
117
- manually solve each conflicted region
118
- force THIS (overriding all cleanly merged modifications)
119
- force OTHER (overriding all cleanly merged modifications)
122
- delete .THIS, .OTHER, .BASE if present
128
- bzr mv .THIS <item>,
129
- bzr mv .OTHER <item>,
130
- manually combine .THIS and .OTHER
133
- delete .THIS, .OTHER, .BASE if present
142
- bzr mv .moved <item> (refuse bzr choice)
143
- bzr rm .moved (accept bzr choice)
144
- manually combine <item> and .moved
148
- nothing to do ? If the '.moved' file still exists emit a
149
warning ? Delete it ? Put it to the trash ?
155
bzr made a choice: version the parent
160
- manually rename <children>
163
- nothing to do nothing more than the conflicted objects have been created
169
bzr made a choice: create the missing parent and version it.
174
- manually rename <children>
177
- nothing to do, nothing more than the conflicted objects have been created
183
bzr made a choice: not delete the parent
188
- manually solve the issue (may be more than a single children)
197
bzr made a choice: use the source's name
200
- do nothing (accept bzr choice)
201
- bzr mv <item> other-name (refuse bzr choice)
202
- manually rename to a different name
210
bzr made a choice: keep the existing renaming
213
- do nothing (accept bzr choice)
214
- bzr mv this_parent/this_children other_parent/other_children
215
- manually rename the items
224
bzr made a choice: create a <parent>.new directory
226
There is no obvious single action that can solve the conflict
227
here, but let's try anyway.
230
- bzr rm <parent>.new
231
- bzr rm <parent> + bzr mv <parent>.new <parent>
232
- manually rename the items