~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

  • Committer: John Arbash Meinel
  • Date: 2007-02-18 00:22:24 UTC
  • mto: This revision was merged to the branch mainline in revision 2298.
  • Revision ID: john@arbash-meinel.com-20070218002224-nfsw9ubivr178ahn
Switch all apis over to utf8 file ids. All tests pass

Show diffs side-by-side

added added

removed removed

Lines of Context:
452
452
        return osutils.lexists(self.abspath(filename))
453
453
 
454
454
    def get_file(self, file_id):
 
455
        file_id = osutils.safe_file_id(file_id)
455
456
        return self.get_file_byname(self.id2path(file_id))
456
457
 
457
458
    def get_file_text(self, file_id):
 
459
        file_id = osutils.safe_file_id(file_id)
458
460
        return self.get_file(file_id).read()
459
461
 
460
462
    def get_file_byname(self, filename):
470
472
        incorrectly attributed to CURRENT_REVISION (but after committing, the
471
473
        attribution will be correct).
472
474
        """
 
475
        file_id = osutils.safe_file_id(file_id)
473
476
        basis = self.basis_tree()
474
477
        changes = self._iter_changes(basis, True, [file_id]).next()
475
478
        changed_content, kind = changes[2], changes[6]
519
522
        
520
523
    def _get_store_filename(self, file_id):
521
524
        ## XXX: badly named; this is not in the store at all
 
525
        file_id = osutils.safe_file_id(file_id)
522
526
        return self.abspath(self.id2path(file_id))
523
527
 
524
528
    @needs_read_lock
557
561
            tree.set_parent_ids([revision_id])
558
562
 
559
563
    def id2abspath(self, file_id):
 
564
        file_id = osutils.safe_file_id(file_id)
560
565
        return self.abspath(self.id2path(file_id))
561
566
 
562
567
    def has_id(self, file_id):
563
568
        # files that have been deleted are excluded
 
569
        file_id = osutils.safe_file_id(file_id)
564
570
        inv = self._inventory
565
571
        if not inv.has_id(file_id):
566
572
            return False
568
574
        return osutils.lexists(self.abspath(path))
569
575
 
570
576
    def has_or_had_id(self, file_id):
 
577
        file_id = osutils.safe_file_id(file_id)
571
578
        if file_id == self.inventory.root.file_id:
572
579
            return True
573
580
        return self.inventory.has_id(file_id)
575
582
    __contains__ = has_id
576
583
 
577
584
    def get_file_size(self, file_id):
 
585
        file_id = osutils.safe_file_id(file_id)
578
586
        return os.path.getsize(self.id2abspath(file_id))
579
587
 
580
588
    @needs_read_lock
581
589
    def get_file_sha1(self, file_id, path=None, stat_value=None):
 
590
        file_id = osutils.safe_file_id(file_id)
582
591
        if not path:
583
592
            path = self._inventory.id2path(file_id)
584
593
        return self._hashcache.get_sha1(path, stat_value)
585
594
 
586
595
    def get_file_mtime(self, file_id, path=None):
 
596
        file_id = osutils.safe_file_id(file_id)
587
597
        if not path:
588
598
            path = self._inventory.id2path(file_id)
589
599
        return os.lstat(self.abspath(path)).st_mtime
590
600
 
591
601
    if not supports_executable():
592
602
        def is_executable(self, file_id, path=None):
 
603
            file_id = osutils.safe_file_id(file_id)
593
604
            return self._inventory[file_id].executable
594
605
    else:
595
606
        def is_executable(self, file_id, path=None):
596
607
            if not path:
 
608
                file_id = osutils.safe_file_id(file_id)
597
609
                path = self._inventory.id2path(file_id)
598
610
            mode = os.lstat(self.abspath(path)).st_mode
599
611
            return bool(stat.S_ISREG(mode) and stat.S_IEXEC & mode)
611
623
            if file_id is None:
612
624
                inv.add_path(f, kind=kind)
613
625
            else:
 
626
                file_id = osutils.safe_file_id(file_id)
614
627
                inv.add_path(f, kind=kind, file_id=file_id)
615
628
        self._write_inventory(inv)
616
629
 
768
781
    def set_merge_modified(self, modified_hashes):
769
782
        def iter_stanzas():
770
783
            for file_id, hash in modified_hashes.iteritems():
771
 
                yield Stanza(file_id=file_id, hash=hash)
 
784
                yield Stanza(file_id=file_id.decode('utf8'), hash=hash)
772
785
        self._put_rio('merge-hashes', iter_stanzas(), MERGE_MODIFIED_HEADER_1)
773
786
 
774
787
    @needs_tree_write_lock
1286
1299
        :raises: NoSuchId if any fileid is not currently versioned.
1287
1300
        """
1288
1301
        for file_id in file_ids:
 
1302
            file_id = osutils.safe_file_id(file_id)
1289
1303
            if self._inventory.has_id(file_id):
1290
1304
                self._inventory.remove_recursive_id(file_id)
1291
1305
            else:
1368
1382
    @needs_write_lock
1369
1383
    def put_file_bytes_non_atomic(self, file_id, bytes):
1370
1384
        """See MutableTree.put_file_bytes_non_atomic."""
 
1385
        file_id = osutils.safe_file_id(file_id)
1371
1386
        stream = file(self.id2abspath(file_id), 'wb')
1372
1387
        try:
1373
1388
            stream.write(bytes)
1711
1726
                DeprecationWarning,
1712
1727
                stacklevel=3)
1713
1728
            file_id = ROOT_ID
 
1729
        else:
 
1730
            file_id = osutils.safe_file_id(file_id)
1714
1731
        inv = self._inventory
1715
1732
        orig_root_id = inv.root.file_id
1716
1733
        # TODO: it might be nice to exit early if there was nothing