/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.
715
693
                for path in path_names:
716
694
                    yield searcher.get_items(path)
717
695
 
 
696
    @needs_read_lock
718
697
    def _get_rules_searcher(self, default_searcher):
719
698
        """Get the RulesSearcher for this tree given the default one."""
720
699
        searcher = default_searcher
869
848
    will pass through to InterTree as appropriate.
870
849
    """
871
850
 
872
 
    # Formats that will be used to test this InterTree. If both are
873
 
    # None, this InterTree will not be tested (e.g. because a complex
874
 
    # setup is required)
875
 
    _matching_from_tree_format = None
876
 
    _matching_to_tree_format = None
877
 
 
878
851
    _optimisers = []
879
852
 
880
853
    def _changes_from_entries(self, source_entry, target_entry,
977
950
            a PathsNotVersionedError will be thrown.
978
951
        :param want_unversioned: Scan for unversioned paths.
979
952
        """
 
953
        # NB: show_status depends on being able to pass in non-versioned files
 
954
        # and report them as unknown
980
955
        trees = (self.source,)
981
956
        if extra_trees is not None:
982
957
            trees = trees + tuple(extra_trees)