~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

  • Committer: Martin Pool
  • Date: 2005-08-25 00:47:04 UTC
  • Revision ID: mbp@sourcefrog.net-20050825004704-e3c75123f29539bf
- expose 'find-merge-base' as a new expert command,
  to help in debugging merges

  move UnrelatedBranches exception into bzrlib.errors

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
"""
19
19
 
20
20
import os
21
 
from cStringIO import StringIO
22
21
 
23
22
import bzrlib
24
23
from bzrlib.trace import mutter, note
25
 
from bzrlib.errors import BzrError, BzrCheckError
 
24
from bzrlib.errors import BzrError
26
25
from bzrlib.inventory import Inventory
27
26
from bzrlib.osutils import pumpfile, appendpath, fingerprint_file
28
27
 
93
92
                     "store is probably damaged/corrupt"])
94
93
 
95
94
 
96
 
    def print_file(self, file_id):
97
 
        """Print file with id `file_id` to stdout."""
 
95
    def print_file(self, fileid):
 
96
        """Print file with id `fileid` to stdout."""
98
97
        import sys
99
 
        sys.stdout.write(self.get_file_text(file_id))
 
98
        pumpfile(self.get_file(fileid), sys.stdout)
100
99
        
101
100
        
102
101
    def export(self, dest, format='dir', root=None):
120
119
           or at least passing a description to the constructor.
121
120
    """
122
121
    
123
 
    def __init__(self, weave_store, inv, revision_id):
124
 
        self._weave_store = weave_store
 
122
    def __init__(self, store, inv):
 
123
        self._store = store
125
124
        self._inventory = inv
126
 
        self._revision_id = revision_id
127
 
 
128
 
    def get_weave(self, file_id):
129
 
        return self._weave_store.get_weave(file_id)
130
 
        
131
 
 
132
 
    def get_file_text(self, file_id):
133
 
        ie = self._inventory[file_id]
134
 
        weave = self.get_weave(file_id)
135
 
        idx = weave.lookup(ie.text_version)
136
 
        content = weave.get_text(idx)
137
 
        if len(content) != ie.text_size:
138
 
            raise BzrCheckError('mismatched size on revision %s of file %s: '
139
 
                                '%d vs %d bytes'
140
 
                                % (self._revision_id, file_id, len(content),
141
 
                                   ie.text_size))
142
 
        return content
143
125
 
144
126
    def get_file(self, file_id):
145
 
        return StringIO(self.get_file_text(file_id))
 
127
        ie = self._inventory[file_id]
 
128
        f = self._store[ie.text_id]
 
129
        mutter("  get fileid{%s} from %r" % (file_id, self))
 
130
        self._check_retrieved(ie, f)
 
131
        return f
146
132
 
147
133
    def get_file_size(self, file_id):
148
134
        return self._inventory[file_id].text_size