~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: Martin Pool
  • Date: 2005-09-15 09:01:32 UTC
  • Revision ID: mbp@sourcefrog.net-20050915090132-15d9ac5b223979d9
- Raise a better error from commit when a parent is absent

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
# TODO: Update hashcache before and after - or does the WorkingTree
45
45
# look after that?
46
46
 
 
47
# This code requires all merge parents to be present in the branch.
 
48
# We could relax this but for the sake of simplicity the constraint is
 
49
# here for now.  It's not totally clear to me how we'd know which file
 
50
# need new text versions if some parents are absent.  -- mbp 20050915
47
51
 
48
52
 
49
53
import os
60
64
                            sha_string, sha_strings, sha_file, isdir, isfile,
61
65
                            split_lines)
62
66
from bzrlib.branch import gen_file_id, INVENTORY_FILEID, ANCESTRY_FILEID
63
 
from bzrlib.errors import BzrError, PointlessCommit
 
67
from bzrlib.errors import (BzrError, PointlessCommit,
 
68
                           HistoryMissing,
 
69
                           )
64
70
from bzrlib.revision import Revision, RevisionReference
65
 
from bzrlib.trace import mutter, note
 
71
from bzrlib.trace import mutter, note, warning
66
72
from bzrlib.xml5 import serializer_v5
67
73
from bzrlib.inventory import Inventory
68
74
from bzrlib.weave import Weave
238
244
        if precursor_id:
239
245
            self.parents.append(precursor_id)
240
246
        self.parents += pending_merges
 
247
        for parent_id in self.parents:
 
248
            if not self.branch.has_revision(parent_id):
 
249
                warning("can't commit a merge from an absent parent")
 
250
                raise HistoryMissing(self.branch, 'revision', parent_id)
241
251
        self.parent_trees = map(self.branch.revision_tree, self.parents)
242
252
 
243
253