~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

Merge direct pack access branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005-2011 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
18
18
"""
19
19
 
20
20
import os
21
 
from collections import deque
22
 
 
23
 
import bzrlib
 
21
 
 
22
from bzrlib.lazy_import import lazy_import
 
23
lazy_import(globals(), """
 
24
import collections
 
25
 
24
26
from bzrlib import (
25
27
    conflicts as _mod_conflicts,
26
28
    debug,
27
29
    delta,
28
30
    errors,
29
31
    filters,
 
32
    inventory,
30
33
    osutils,
31
34
    revision as _mod_revision,
32
35
    rules,
 
36
    trace,
33
37
    )
 
38
""")
 
39
 
34
40
from bzrlib.decorators import needs_read_lock
35
 
from bzrlib.inventory import InventoryFile
36
41
from bzrlib.inter import InterObject
37
 
from bzrlib.osutils import fingerprint_file
38
 
from bzrlib.trace import note
39
42
 
40
43
 
41
44
class Tree(object):
522
525
    def _check_retrieved(self, ie, f):
523
526
        if not __debug__:
524
527
            return
525
 
        fp = fingerprint_file(f)
 
528
        fp = osutils.fingerprint_file(f)
526
529
        f.seek(0)
527
530
 
528
531
        if ie.text_size is not None:
669
672
        prefs = self.iter_search_rules([path], filter_pref_names).next()
670
673
        stk = filters._get_filter_stack_for(prefs)
671
674
        if 'filters' in debug.debug_flags:
672
 
            note("*** %s content-filter: %s => %r" % (path,prefs,stk))
 
675
            trace.note("*** %s content-filter: %s => %r" % (path,prefs,stk))
673
676
        return stk
674
677
 
675
678
    def _content_filter_stack_provider(self):
969
972
            # All files are unversioned, so just return an empty delta
970
973
            # _compare_trees would think we want a complete delta
971
974
            result = delta.TreeDelta()
972
 
            fake_entry = InventoryFile('unused', 'unused', 'unused')
 
975
            fake_entry = inventory.InventoryFile('unused', 'unused', 'unused')
973
976
            result.unversioned = [(path, None,
974
977
                self.target._comparison_data(fake_entry, path)[0]) for path in
975
978
                specific_files]
1040
1043
                                     self.target.extras()
1041
1044
                if specific_files is None or
1042
1045
                    osutils.is_inside_any(specific_files, p)])
1043
 
            all_unversioned = deque(all_unversioned)
 
1046
            all_unversioned = collections.deque(all_unversioned)
1044
1047
        else:
1045
 
            all_unversioned = deque()
 
1048
            all_unversioned = collections.deque()
1046
1049
        to_paths = {}
1047
1050
        from_entries_by_dir = list(self.source.iter_entries_by_dir(
1048
1051
            specific_file_ids=specific_file_ids))
1054
1057
        # the unversioned path lookup only occurs on real trees - where there
1055
1058
        # can be extras. So the fake_entry is solely used to look up
1056
1059
        # executable it values when execute is not supported.
1057
 
        fake_entry = InventoryFile('unused', 'unused', 'unused')
 
1060
        fake_entry = inventory.InventoryFile('unused', 'unused', 'unused')
1058
1061
        for target_path, target_entry in to_entries_by_dir:
1059
1062
            while (all_unversioned and
1060
1063
                all_unversioned[0][0] < target_path.split('/')):