~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

merge from mbp.

Show diffs side-by-side

added added

removed removed

Lines of Context:
236
236
    def set_root_id(self, file_id):
237
237
        raise NotImplementedError('set_root_id is abstract')
238
238
 
239
 
    def print_file(self, file, revno):
 
239
    def print_file(self, file, revision_id):
240
240
        """Print `file` to stdout."""
241
241
        raise NotImplementedError('print_file is abstract')
242
242
 
656
656
        self._transaction = new_transaction
657
657
 
658
658
    def lock_write(self):
659
 
        mutter("lock write: %s (%s)", self, self._lock_count)
 
659
        #mutter("lock write: %s (%s)", self, self._lock_count)
660
660
        # TODO: Upgrade locking to support using a Transport,
661
661
        # and potentially a remote locking protocol
662
662
        if self._lock_mode:
672
672
            self._set_transaction(transactions.PassThroughTransaction())
673
673
 
674
674
    def lock_read(self):
675
 
        mutter("lock read: %s (%s)", self, self._lock_count)
 
675
        #mutter("lock read: %s (%s)", self, self._lock_count)
676
676
        if self._lock_mode:
677
677
            assert self._lock_mode in ('r', 'w'), \
678
678
                   "invalid lock mode %r" % self._lock_mode
687
687
            self.get_transaction().set_cache_size(5000)
688
688
                        
689
689
    def unlock(self):
690
 
        mutter("unlock: %s (%s)", self, self._lock_count)
 
690
        #mutter("unlock: %s (%s)", self, self._lock_count)
691
691
        if not self._lock_mode:
692
692
            raise LockError('branch %r is not locked' % (self))
693
693
 
824
824
        return inv.root.file_id
825
825
 
826
826
    @needs_read_lock
827
 
    def print_file(self, file, revno):
 
827
    def print_file(self, file, revision_id):
828
828
        """See Branch.print_file."""
829
 
        tree = self.revision_tree(self.get_rev_id(revno))
 
829
        tree = self.revision_tree(revision_id)
830
830
        # use inventory as it was in that revision
831
831
        file_id = tree.inventory.path2id(file)
832
832
        if not file_id:
833
 
            raise BzrError("%r is not present in revision %s" % (file, revno))
 
833
            try:
 
834
                revno = self.revision_id_to_revno(revision_id)
 
835
            except errors.NoSuchRevision:
 
836
                # TODO: This should not be BzrError,
 
837
                # but NoSuchFile doesn't fit either
 
838
                raise BzrError('%r is not present in revision %s' 
 
839
                                % (file, revision_id))
 
840
            else:
 
841
                raise BzrError('%r is not present in revision %s'
 
842
                                % (file, revno))
834
843
        tree.print_file(file_id)
835
844
 
836
845
    @needs_write_lock
848
857
        old_revision = self.last_revision()
849
858
        new_revision = rev_history[-1]
850
859
        self.put_controlfile('revision-history', '\n'.join(rev_history))
851
 
        self.working_tree().set_last_revision(new_revision, old_revision)
 
860
        try:
 
861
            self.working_tree().set_last_revision(new_revision, old_revision)
 
862
        except NoWorkingTree:
 
863
            mutter('Unable to set_last_revision without a working tree.')
852
864
 
853
865
    def has_revision(self, revision_id):
854
866
        """See Branch.has_revision."""
1002
1014
            xml = self.working_tree().read_basis_inventory(revision_id)
1003
1015
            inv = bzrlib.xml5.serializer_v5.read_inventory_from_string(xml)
1004
1016
            return RevisionTree(self.weave_store, inv, revision_id)
1005
 
        except (IndexError, NoSuchFile), e:
 
1017
        except (IndexError, NoSuchFile, NoWorkingTree), e:
1006
1018
            return self.revision_tree(self.last_revision())
1007
1019
 
1008
1020
    def working_tree(self):
1023
1035
            except DivergedBranches:
1024
1036
                if not overwrite:
1025
1037
                    raise
 
1038
            if overwrite:
1026
1039
                self.set_revision_history(source.revision_history())
1027
1040
            new_count = len(self.revision_history())
1028
1041
            return new_count - old_count
1036
1049
        for l in _locs:
1037
1050
            try:
1038
1051
                return self.controlfile(l, 'r').read().strip('\n')
1039
 
            except IOError, e:
1040
 
                if e.errno != errno.ENOENT:
1041
 
                    raise
 
1052
            except NoSuchFile:
 
1053
                pass
1042
1054
        return None
1043
1055
 
1044
1056
    def get_push_location(self):