~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: Robert Collins
  • Date: 2005-10-06 06:31:33 UTC
  • Revision ID: robertc@robertcollins.net-20051006063133-5e9bf4c7570cae6c
remove the ancestry weave file

Show diffs side-by-side

added added

removed removed

Lines of Context:
219
219
                raise PointlessCommit()
220
220
 
221
221
            self._record_inventory()
222
 
            self._record_ancestry()
223
222
            self._make_revision()
224
223
            note('committed r%d {%s}', (self.branch.revno() + 1),
225
224
                 self.rev_id)
255
254
        if escape_count:
256
255
            note("replaced %d control characters in message", escape_count)
257
256
 
258
 
    def _record_ancestry(self):
259
 
        """Append merged revision ancestry to the ancestry file.
260
 
 
261
 
        This should be the merged ancestry of all parents, plus the
262
 
        new revision id."""
263
 
        s = self.branch.control_weaves
264
 
        w = s.get_weave_or_empty('ancestry')
265
 
        lines = self._make_ancestry(w)
266
 
        w.add(self.rev_id, self.present_parents, lines)
267
 
        s.put_weave('ancestry', w)
268
 
 
269
 
    def _make_ancestry(self, ancestry_weave):
270
 
        """Return merged ancestry lines.
271
 
 
272
 
        The lines are revision-ids followed by newlines."""
273
 
        parent_ancestries = [ancestry_weave.get(p) for p in self.present_parents]
274
 
        new_lines = merge_ancestry_lines(self.rev_id, parent_ancestries)
275
 
        mutter('merged ancestry of {%s}:\n%s', self.rev_id, ''.join(new_lines))
276
 
        return new_lines
277
 
 
278
257
    def _gather_parents(self):
279
258
        """Record the parents of a merge for merge detection."""
280
259
        pending_merges = self.branch.pending_merges()
315
294
        self.branch.revision_store.add(rev_tmp, self.rev_id)
316
295
        mutter('new revision_id is {%s}', self.rev_id)
317
296
 
318
 
 
319
297
    def _remove_deleted(self):
320
298
        """Remove deleted files from the working inventories.
321
299
 
397
375
            if file_id not in self.new_inv:
398
376
                note('deleted %s', self.basis_inv.id2path(file_id))
399
377
 
400
 
 
401
 
 
402
378
def _gen_revision_id(branch, when):
403
379
    """Return new revision-id."""
404
380
    s = '%s-%s-' % (user_email(branch), compact_date(when))
405
381
    s += hexlify(rand_bytes(8))
406
382
    return s
407
 
 
408
 
 
409
 
 
410
 
    
411
 
def merge_ancestry_lines(rev_id, ancestries):
412
 
    """Return merged ancestry lines.
413
 
 
414
 
    rev_id -- id of the new revision
415
 
    
416
 
    ancestries -- a sequence of ancestries for parent revisions,
417
 
        as newline-terminated line lists.
418
 
    """
419
 
    if len(ancestries) == 0:
420
 
        return [rev_id + '\n']
421
 
    seen = set(ancestries[0])
422
 
    ancs = ancestries[0][:]    
423
 
    for parent_ancestry in ancestries[1:]:
424
 
        for line in parent_ancestry:
425
 
            assert line[-1] == '\n'
426
 
            if line not in seen:
427
 
                ancs.append(line)
428
 
                seen.add(line)
429
 
    r = rev_id + '\n'
430
 
    assert r not in seen
431
 
    ancs.append(r)
432
 
    return ancs