~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/versionedfile.py

  • Committer: Robert Collins
  • Date: 2007-09-12 04:21:51 UTC
  • mto: This revision was merged to the branch mainline in revision 2817.
  • Revision ID: robertc@robertcollins.net-20070912042151-o2k78pnf1hdwd2xt
Review feedback.

Show diffs side-by-side

added added

removed removed

Lines of Context:
78
78
        raise NotImplementedError(self.has_version)
79
79
 
80
80
    def add_lines(self, version_id, parents, lines, parent_texts=None,
81
 
        left_matching_blocks=None, nostore_sha=None, random_id=False):
 
81
        left_matching_blocks=None, nostore_sha=None, random_id=False,
 
82
        check_content=True):
82
83
        """Add a single text on top of the versioned file.
83
84
 
84
85
        Must raise RevisionAlreadyPresent if the new version is
93
94
            terminated \n. If the lines list does meet this constraint the add
94
95
            routine may error or may succeed - but you will be unable to read
95
96
            the data back accurately. (Checking the lines have been split
96
 
            correctly is expensive and extermely unlikely to catch bugs so it
97
 
            is not done at runtime.)
 
97
            correctly is expensive and extremely unlikely to catch bugs so it
 
98
            is not done at runtime unless check_content is True.)
98
99
        :param parent_texts: An optional dictionary containing the opaque 
99
100
            representations of some or all of the parents of version_id to
100
101
            allow delta optimisations.  VERY IMPORTANT: the texts must be those
110
111
            for uniqueness of the resulting key within the versioned file, so
111
112
            this should only be done when the result is expected to be unique
112
113
            anyway.
 
114
        :param check_content: If True, the lines supplied are verified to be
 
115
            bytestrings that are correctly formed lines.
113
116
        :return: The text sha1, the number of bytes in the text, and an opaque
114
117
                 representation of the inserted version which can be provided
115
118
                 back to future add_lines calls in the parent_texts dictionary.
118
121
        parents = [osutils.safe_revision_id(v) for v in parents]
119
122
        self._check_write_ok()
120
123
        return self._add_lines(version_id, parents, lines, parent_texts,
121
 
            left_matching_blocks, nostore_sha, random_id)
 
124
            left_matching_blocks, nostore_sha, random_id, check_content)
122
125
 
123
126
    def _add_lines(self, version_id, parents, lines, parent_texts,
124
 
        left_matching_blocks, nostore_sha, random_id):
 
127
        left_matching_blocks, nostore_sha, random_id, check_content):
125
128
        """Helper to do the class specific add_lines."""
126
129
        raise NotImplementedError(self.add_lines)
127
130
 
128
131
    def add_lines_with_ghosts(self, version_id, parents, lines,
129
 
        parent_texts=None, nostore_sha=None, random_id=False):
 
132
        parent_texts=None, nostore_sha=None, random_id=False,
 
133
        check_content=True):
130
134
        """Add lines to the versioned file, allowing ghosts to be present.
131
135
        
132
136
        This takes the same parameters as add_lines and returns the same.
135
139
        parents = [osutils.safe_revision_id(v) for v in parents]
136
140
        self._check_write_ok()
137
141
        return self._add_lines_with_ghosts(version_id, parents, lines,
138
 
            parent_texts, nostore_sha, random_id)
 
142
            parent_texts, nostore_sha, random_id, check_content)
139
143
 
140
144
    def _add_lines_with_ghosts(self, version_id, parents, lines, parent_texts,
141
 
        nostore_sha, random_id):
 
145
        nostore_sha, random_id, check_content):
142
146
        """Helper to do class specific add_lines_with_ghosts."""
143
147
        raise NotImplementedError(self.add_lines_with_ghosts)
144
148