~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to read_changeset.py

  • Committer: John Arbash Meinel
  • Date: 2005-07-02 07:20:08 UTC
  • mto: (0.5.85) (1185.82.1 bzr-w-changeset)
  • mto: This revision was merged to the branch mainline in revision 1738.
  • Revision ID: john@arbash-meinel.com-20050702072008-26d6e862eff44079
Several fixes for handling the case where you are doing a changeset against revno=0 (Null base)

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
            inventory_sha1=self.inventory_sha1,
62
62
            message='\n'.join(self.message))
63
63
 
64
 
        for parent in self.parents:
65
 
            rev_id, sha1 = parent.split('\t')
66
 
            rev.parents.append(RevisionReference(rev_id, sha1))
 
64
        if self.parents:
 
65
            for parent in self.parents:
 
66
                rev_id, sha1 = parent.split('\t')
 
67
                rev.parents.append(RevisionReference(rev_id, sha1))
67
68
 
68
69
        return rev
69
70
 
122
123
            # When we don't have a base, then the real base
123
124
            # is the first parent of the first revision listed
124
125
            rev = self.real_revisions[0]
125
 
            self.base = rev.parents[0].revision_id
126
 
            # In general, if self.base is None, self.base_sha1 should
127
 
            # also be None
128
 
            if self.base_sha1 is not None:
129
 
                assert self.base_sha1 == rev.parents[0].revision_sha1
130
 
            self.base_sha1 = rev.parents[0].revision_sha1
 
126
            if len(rev.parents) == 0:
 
127
                # There is no base listed, and
 
128
                # the lowest revision doesn't have a parent
 
129
                # so this is probably against the empty tree
 
130
                # and thus base truly is None
 
131
                self.base = None
 
132
                self.base_sha1 = None
 
133
            else:
 
134
                self.base = rev.parents[0].revision_id
 
135
                # In general, if self.base is None, self.base_sha1 should
 
136
                # also be None
 
137
                if self.base_sha1 is not None:
 
138
                    assert self.base_sha1 == rev.parents[0].revision_sha1
 
139
                self.base_sha1 = rev.parents[0].revision_sha1
131
140
 
132
141
 
133
142
 
158
167
        be used to populate the local stores and working tree, respectively.
159
168
        """
160
169
        self.info.complete_info()
161
 
        store_base_sha1 = branch.get_revision_sha1(self.info.base) 
 
170
        if self.info.base:
 
171
            store_base_sha1 = branch.get_revision_sha1(self.info.base) 
 
172
        else:
 
173
            store_base_sha1 = None
162
174
        if store_base_sha1 != self.info.base_sha1:
163
175
            raise BzrError('Base revision sha1 hash in store'
164
176
                    ' does not match the one read in the changeset'
296
308
                ': %r' % line)
297
309
        action = line[4:-1]
298
310
 
 
311
        if self._next_line is None or self._next_line[:1] == '#':
 
312
            return action, [], False
299
313
        lines = []
300
314
        for line in self._next():
301
315
            lines.append(line)
426
440
                raise BzrError('add action lines have fewer than 3 entries.'
427
441
                        ': %r' % extra)
428
442
            path = decode(info[0])
429
 
            if info[1][:8] == 'file-id:':
 
443
            if info[1][:8] != 'file-id:':
430
444
                raise BzrError('The file-id should follow the path for an add'
431
445
                        ': %r' % extra)
432
446
            file_id = decode(info[1][8:])