/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

  • Committer: Vincent Ladeuil
  • Date: 2009-09-02 08:26:27 UTC
  • mto: (4669.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 4670.
  • Revision ID: v.ladeuil+lp@free.fr-20090902082627-cit8vm6tefu9hwk2
Cleanup emacs-bzr-send-XXXXXX.el leaks in /tmp during selftest.

* tests/test_mail_client.py:
(TestEmacsMail.test_commandline,
TestEmacsMail.test_commandline_is_8bit): Cleanup the generated tmp
file.

* mail_client.py:
(EmacsMail.__init__, EmacsMail._get_compose_commandline): Keep
track of the tmp file to ease cleanup during testing.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
36
36
from bzrlib.inventory import InventoryFile
37
37
from bzrlib.inter import InterObject
38
38
from bzrlib.osutils import fingerprint_file
 
39
import bzrlib.revision
39
40
from bzrlib.symbol_versioning import deprecated_function, deprecated_in
40
41
from bzrlib.trace import note
41
42
 
97
98
    def iter_changes(self, from_tree, include_unchanged=False,
98
99
                     specific_files=None, pb=None, extra_trees=None,
99
100
                     require_versioned=True, want_unversioned=False):
100
 
        """See InterTree.iter_changes"""
101
101
        intertree = InterTree.get(from_tree, self)
102
102
        return intertree.iter_changes(include_unchanged, specific_files, pb,
103
103
            extra_trees, require_versioned, want_unversioned=want_unversioned)
222
222
    def path_content_summary(self, path):
223
223
        """Get a summary of the information about path.
224
224
 
225
 
        All the attributes returned are for the canonical form, not the
226
 
        convenient form (if content filters are in use.)
227
 
 
228
225
        :param path: A relative path within the tree.
229
226
        :return: A tuple containing kind, size, exec, sha1-or-link.
230
227
            Kind is always present (see tree.kind()).
231
 
            size is present if kind is file and the size of the 
232
 
                canonical form can be cheaply determined, None otherwise.
 
228
            size is present if kind is file, None otherwise.
233
229
            exec is None unless kind is file and the platform supports the 'x'
234
230
                bit.
235
231
            sha1-or-link is the link target if kind is symlink, or the sha1 if
404
400
            bit_iter = iter(path.split("/"))
405
401
            for elt in bit_iter:
406
402
                lelt = elt.lower()
407
 
                new_path = None
408
403
                for child in self.iter_children(cur_id):
409
404
                    try:
410
 
                        # XXX: it seem like if the child is known to be in the
411
 
                        # tree, we shouldn't need to go from its id back to
412
 
                        # its path -- mbp 2010-02-11
413
 
                        #
414
 
                        # XXX: it seems like we could be more efficient
415
 
                        # by just directly looking up the original name and
416
 
                        # only then searching all children; also by not
417
 
                        # chopping paths so much. -- mbp 2010-02-11
418
405
                        child_base = os.path.basename(self.id2path(child))
419
 
                        if (child_base == elt):
420
 
                            # if we found an exact match, we can stop now; if
421
 
                            # we found an approximate match we need to keep
422
 
                            # searching because there might be an exact match
423
 
                            # later.  
 
406
                        if child_base.lower() == lelt:
424
407
                            cur_id = child
425
 
                            new_path = osutils.pathjoin(cur_path, child_base)
 
408
                            cur_path = osutils.pathjoin(cur_path, child_base)
426
409
                            break
427
 
                        elif child_base.lower() == lelt:
428
 
                            cur_id = child
429
 
                            new_path = osutils.pathjoin(cur_path, child_base)
430
410
                    except NoSuchId:
431
411
                        # before a change is committed we can see this error...
432
412
                        continue
433
 
                if new_path:
434
 
                    cur_path = new_path
435
413
                else:
436
414
                    # got to the end of this directory and no entries matched.
437
415
                    # Return what matched so far, plus the rest as specified.
582
560
            yield child.file_id
583
561
 
584
562
    def lock_read(self):
585
 
        """Lock this tree for multiple read only operations.
586
 
        
587
 
        :return: A bzrlib.lock.LogicalLockResult.
588
 
        """
589
563
        pass
590
564
 
591
565
    def revision_tree(self, revision_id):
719
693
                for path in path_names:
720
694
                    yield searcher.get_items(path)
721
695
 
 
696
    @needs_read_lock
722
697
    def _get_rules_searcher(self, default_searcher):
723
698
        """Get the RulesSearcher for this tree given the default one."""
724
699
        searcher = default_searcher
873
848
    will pass through to InterTree as appropriate.
874
849
    """
875
850
 
876
 
    # Formats that will be used to test this InterTree. If both are
877
 
    # None, this InterTree will not be tested (e.g. because a complex
878
 
    # setup is required)
879
 
    _matching_from_tree_format = None
880
 
    _matching_to_tree_format = None
881
 
 
882
851
    _optimisers = []
883
852
 
884
853
    def _changes_from_entries(self, source_entry, target_entry,
981
950
            a PathsNotVersionedError will be thrown.
982
951
        :param want_unversioned: Scan for unversioned paths.
983
952
        """
 
953
        # NB: show_status depends on being able to pass in non-versioned files
 
954
        # and report them as unknown
984
955
        trees = (self.source,)
985
956
        if extra_trees is not None:
986
957
            trees = trees + tuple(extra_trees)