/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: Robert Collins
  • Date: 2010-05-06 11:08:10 UTC
  • mto: This revision was merged to the branch mainline in revision 5223.
  • Revision ID: robertc@robertcollins.net-20100506110810-h3j07fh5gmw54s25
Cleaner matcher matching revised unlocking protocol.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
40
39
from bzrlib.symbol_versioning import deprecated_function, deprecated_in
41
40
from bzrlib.trace import note
42
41
 
405
404
            bit_iter = iter(path.split("/"))
406
405
            for elt in bit_iter:
407
406
                lelt = elt.lower()
 
407
                new_path = None
408
408
                for child in self.iter_children(cur_id):
409
409
                    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
410
418
                        child_base = os.path.basename(self.id2path(child))
411
 
                        if child_base.lower() == lelt:
 
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.  
412
424
                            cur_id = child
413
 
                            cur_path = osutils.pathjoin(cur_path, child_base)
 
425
                            new_path = osutils.pathjoin(cur_path, child_base)
414
426
                            break
 
427
                        elif child_base.lower() == lelt:
 
428
                            cur_id = child
 
429
                            new_path = osutils.pathjoin(cur_path, child_base)
415
430
                    except NoSuchId:
416
431
                        # before a change is committed we can see this error...
417
432
                        continue
 
433
                if new_path:
 
434
                    cur_path = new_path
418
435
                else:
419
436
                    # got to the end of this directory and no entries matched.
420
437
                    # Return what matched so far, plus the rest as specified.