4
https://bugs.edge.launchpad.net/bzr/+bug/414589
6
https://bugs.edge.launchpad.net/bzr/+bug/236724
7
https://bugs.edge.launchpad.net/bzr/+bug/228506
8
https://bugs.edge.launchpad.net/bzr/+bug/113809
9
https://bugs.edge.launchpad.net/bzr/+bug/322767
10
https://bugs.edge.launchpad.net/bzr/+bug/416903
11
https://bugs.edge.launchpad.net/bzr/+bug/355964
13
https://bugs.edge.launchpad.net/bzr/+bug/257297
14
https://bugs.edge.launchpad.net/bzr/+bug/232512
16
https://bugs.edge.launchpad.net/bzr/+bug/405264
22
- add more info to Conflict objects:
24
- base revid for text conflict
26
- tests with '.diverted' files ?
28
- doc/es/user-guide/resolving_conflicts.txt is really
29
use-reference/resolving_conflicts.txt
35
When conflicts are present in a working tree (as shown by ``bzr
36
conflicts``), the user should resolve them and then inform bzr
37
that the conflicts has been resolved.
39
Resolving conflicts is sometimes not obvious. Either because the
40
user that should resolve them is not the one responsible for
41
their occurrence, as is the case when merging other people work
42
or because some conflicts are presented in a way that is not easy
45
``bzr`` try to avoid conflicts, its aim is to ask the user to
46
resolve the conflict if and only if there's an actual conceptual
47
conflict in the source tree. Because bzr doesn't understand the
48
real meaning of the files being versioned it can fall short in
49
either direction trying to resolve the conflict itself when faced
52
When it can't resolve, bzr add information into the working tree
53
to present the conflicting versions and leave the resolution to
56
Whatever the conflict is, resolving it is roughly done in two steps:
58
- modify the working tree content so that the conflicted item is
59
now in the desired state, there are,
61
- inform bzr that the conflict is now solved and ask to cleanup
62
any remaining generated information (``bzr resolve <item>``).
65
For most conflict types, there are some obvious ways to modify
66
the working tree and put it into the desired state. For some type
67
of conflicts, bzr itself already made a choice when possible.
69
Yet, whether bzr made a choice or not, there are some other ways
70
simple but alternative ways to resolve the conflict.
72
Providing the ``--interactive`` option to ``bzr resolve`` will
73
display a short explanation of the conflict and propose some
74
actions before marking the file as resolved.
80
The Conflict classes will receive additional methods to resolve
81
the conflict in alternative ways.
83
Resolve will receive a ``--interactive`` option and present a
84
list of possible actions (including do nothing) to the user
85
before marking the file as resolved.
87
The --all and file* parameters will still be honored so that the
88
user solve conflicts at his own pace.
90
It should be possible for a GUI to query the conflict objects for
91
possible actions (in textual form) and trigger them.
94
Proposed actions by conflict type:
95
==================================
97
The following paragraphs list all the existing conflict types and summarize:
98
- the actions that can be proposed to the user,
99
- the cleanups that could remain to be done once the conflict is solved,
101
In practice, the actions will always contain:
102
- leave the user solve the conflict by its own means,
103
- mark the conflict as solved without any additional action.
110
- force THIS (for all conflicted regions)
111
- force OTHER (for all conflicted regions)
112
- manually solve each conflicted region
113
- force THIS (overriding all cleanly merged modifications)
114
- force OTHER (overriding all cleanly merged modifications)
117
- delete .THIS, .OTHER, .BASE if present
123
- bzr mv .THIS <item>,
124
- bzr mv .OTHER <item>,
125
- manually combine .THIS and .OTHER
128
- delete .THIS, .OTHER, .BASE if present
137
- bzr mv .moved <item> (refuse bzr choice)
138
- bzr rm .moved (accept bzr choice)
139
- manually combine <item> and .moved
143
- nothing to do ? If the '.moved' file still exists emit a
144
warning ? Delete it ? Put it to the trash ?
150
bzr made a choice: version the parent
155
- manually rename <children>
158
- nothing to do nothing more than the conflicted objects have been created
164
bzr made a choice: create the missing parent and version it.
169
- manually rename <children>
172
- nothing to do, nothing more than the conflicted objects have been created
178
bzr made a choice: not delete the parent
183
- manually solve the issue (may be more than a single children)
192
bzr made a choice: use the source's name
195
- do nothing (accept bzr choice)
196
- bzr mv <item> other-name (refuse bzr choice)
197
- manually rename to a different name
205
bzr made a choice: keep the existing renaming
208
- do nothing (accept bzr choice)
209
- bzr mv this_parent/this_children other_parent/other_children
210
- manually rename the items
219
bzr made a choice: create a <parent>.new directory
221
There is no obvious single action that can solve the conflict
222
here, but let's try anyway.
225
- bzr rm <parent>.new
226
- bzr rm <parent> + bzr mv <parent>.new <parent>
227
- manually rename the items