~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lazy_import.py

Fix #531967 by creating helpers for PathConflicts when a deletion
is involved.

* bzrlib/tests/test_conflicts.py:
(TestParametrizedResolveConflicts.mirror_scenarios): Renamed from
multiply_scenarios to make the intent clearer. Turned into a
classmethod too for the same reason.
(TestParametrizedResolveConflicts.scenarios): Now a classmethod.

* bzrlib/merge.py:
(Merge3Merger._merge_names): 'name conflict' and 'parent conflict'
can (and must) be handled in the same way. If a deletion is
involved we create an unversioned copy of the rejected item so the
user can restore that easily.
(Merge3Merger.cook_conflicts): Get rid of 'name conflict', 'parent
conflict' distinction and just create PathConflicts with a file_id
to address bug #531967.

* bzrlib/conflicts.py:
(PathConflict.associated_filenames): Helpers exist only when a
deletion is involved.
(PathConflict._resolve): We may have to version one path
again. This may happen when a deletion have occurred.
(PathConflict.action_take_this, PathConflict.action_take_other):
As a special case, we may have an helper to use when deletion was
involved.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""Functionality to create lazy evaluation objects.
18
18
 
149
149
 
150
150
        :param scope: The scope that objects should be imported into.
151
151
            Typically this is globals()
152
 
        :param name: The variable name. Often this is the same as the 
 
152
        :param name: The variable name. Often this is the same as the
153
153
            module_path. 'bzrlib'
154
154
        :param module_path: A list for the fully specified module path
155
155
            ['bzrlib', 'foo', 'bar']
157
157
            None, indicating the module is being imported.
158
158
        :param children: Children entries to be imported later.
159
159
            This should be a map of children specifications.
160
 
            {'foo':(['bzrlib', 'foo'], None, 
 
160
            {'foo':(['bzrlib', 'foo'], None,
161
161
                {'bar':(['bzrlib', 'foo', 'bar'], None {})})
162
162
            }
163
163
        Examples: