~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

  • Committer: Martin
  • Date: 2010-09-05 17:15:46 UTC
  • mto: This revision was merged to the branch mainline in revision 5412.
  • Revision ID: gzlist@googlemail.com-20100905171546-3ggqhogy23fgoxc8
Add check in lazy import ScopeReplacer to ensure it's not trying to replace itself

Show diffs side-by-side

added added

removed removed

Lines of Context:
353
353
        return control.open_workingtree(), relpath
354
354
 
355
355
    @staticmethod
356
 
    def open_containing_paths(file_list, default_directory=None,
357
 
                              canonicalize=True, apply_view=True):
 
356
    def open_containing_paths(file_list, default_directory='.',
 
357
        canonicalize=True, apply_view=True):
358
358
        """Open the WorkingTree that contains a set of paths.
359
359
 
360
360
        Fail if the paths given are not all in a single tree.
362
362
        This is used for the many command-line interfaces that take a list of
363
363
        any number of files and that require they all be in the same tree.
364
364
        """
365
 
        if default_directory is None:
366
 
            default_directory = u'.'
367
365
        # recommended replacement for builtins.internal_tree_files
368
366
        if file_list is None or len(file_list) == 0:
369
367
            tree = WorkingTree.open_containing(default_directory)[0]
377
375
                    view_str = views.view_display_str(view_files)
378
376
                    note("Ignoring files outside view. View is %s" % view_str)
379
377
            return tree, file_list
380
 
        if default_directory == u'.':
381
 
            seed = file_list[0]
382
 
        else:
383
 
            seed = default_directory
384
 
            file_list = [osutils.pathjoin(default_directory, f)
385
 
                         for f in file_list]
386
 
        tree = WorkingTree.open_containing(seed)[0]
 
378
        tree = WorkingTree.open_containing(file_list[0])[0]
387
379
        return tree, tree.safe_relpath_files(file_list, canonicalize,
388
 
                                             apply_view=apply_view)
 
380
            apply_view=apply_view)
389
381
 
390
382
    def safe_relpath_files(self, file_list, canonicalize=True, apply_view=True):
391
383
        """Convert file_list into a list of relpaths in tree.
1671
1663
 
1672
1664
    @needs_write_lock
1673
1665
    def pull(self, source, overwrite=False, stop_revision=None,
1674
 
             change_reporter=None, possible_transports=None, local=False,
1675
 
             show_base=False):
 
1666
             change_reporter=None, possible_transports=None, local=False):
1676
1667
        source.lock_read()
1677
1668
        try:
1678
1669
            old_revision_info = self.branch.last_revision_info()
1692
1683
                                basis_tree,
1693
1684
                                this_tree=self,
1694
1685
                                pb=None,
1695
 
                                change_reporter=change_reporter,
1696
 
                                show_base=show_base)
 
1686
                                change_reporter=change_reporter)
1697
1687
                    basis_root_id = basis_tree.get_root_id()
1698
1688
                    new_root_id = new_basis_tree.get_root_id()
1699
1689
                    if basis_root_id != new_root_id:
2088
2078
                    files_to_backup.append(path[1])
2089
2079
 
2090
2080
        def backup(file_to_backup):
2091
 
            backup_name = self.bzrdir._available_backup_name(file_to_backup)
 
2081
            backup_name = self.bzrdir.generate_backup_name(file_to_backup)
2092
2082
            osutils.rename(abs_path, self.abspath(backup_name))
2093
 
            return "removed %s (but kept a copy: %s)" % (file_to_backup,
2094
 
                                                         backup_name)
 
2083
            return "removed %s (but kept a copy: %s)" % (file_to_backup, backup_name)
2095
2084
 
2096
2085
        # Build inv_delta and delete files where applicable,
2097
2086
        # do this before any modifications to inventory.
2272
2261
    _marker = object()
2273
2262
 
2274
2263
    def update(self, change_reporter=None, possible_transports=None,
2275
 
               revision=None, old_tip=_marker, show_base=False):
 
2264
               revision=None, old_tip=_marker):
2276
2265
        """Update a working tree along its branch.
2277
2266
 
2278
2267
        This will update the branch if its bound too, which means we have
2315
2304
            else:
2316
2305
                if old_tip is self._marker:
2317
2306
                    old_tip = None
2318
 
            return self._update_tree(old_tip, change_reporter, revision, show_base)
 
2307
            return self._update_tree(old_tip, change_reporter, revision)
2319
2308
        finally:
2320
2309
            self.unlock()
2321
2310
 
2322
2311
    @needs_tree_write_lock
2323
 
    def _update_tree(self, old_tip=None, change_reporter=None, revision=None,
2324
 
                     show_base=False):
 
2312
    def _update_tree(self, old_tip=None, change_reporter=None, revision=None):
2325
2313
        """Update a tree to the master branch.
2326
2314
 
2327
2315
        :param old_tip: if supplied, the previous tip revision the branch,
2354
2342
            other_tree = self.branch.repository.revision_tree(old_tip)
2355
2343
            nb_conflicts = merge.merge_inner(self.branch, other_tree,
2356
2344
                                             base_tree, this_tree=self,
2357
 
                                             change_reporter=change_reporter,
2358
 
                                             show_base=show_base)
 
2345
                                             change_reporter=change_reporter)
2359
2346
            if nb_conflicts:
2360
2347
                self.add_parent_tree((old_tip, other_tree))
2361
2348
                trace.note('Rerun update after fixing the conflicts.')
2385
2372
 
2386
2373
            nb_conflicts = merge.merge_inner(self.branch, to_tree, base_tree,
2387
2374
                                             this_tree=self,
2388
 
                                             change_reporter=change_reporter,
2389
 
                                             show_base=show_base)
 
2375
                                             change_reporter=change_reporter)
2390
2376
            self.set_last_revision(revision)
2391
2377
            # TODO - dedup parents list with things merged by pull ?
2392
2378
            # reuse the tree we've updated to to set the basis: