~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/changeset/apply_changeset.py

  • Committer: Aaron Bentley
  • Date: 2006-05-15 11:51:02 UTC
  • mto: (1185.82.108 w-changeset)
  • mto: This revision was merged to the branch mainline in revision 1738.
  • Revision ID: aaron.bentley@utoronto.ca-20060515115102-1f88e5f55acddde8
Started work on testing install_revisions/handling empty changesets

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
          the bottom of a changeset (though I would like to add them all
32
32
          as ghost revisions)
33
33
    """
34
 
 
35
34
    if not repository.has_revision(cset_info.target):
 
35
        rev = cset_info.real_revisions[-1]
36
36
        repository.lock_write()
37
37
        try:
38
 
            # install the inventory
39
 
            # TODO: Figure out how to handle ghosted revisions
40
 
            present_parents = []
41
 
            parent_invs = []
42
 
            rev = cset_info.real_revisions[-1]
43
 
            for p_id in rev.parent_ids:
44
 
                if repository.has_revision(p_id):
45
 
                    present_parents.append(p_id)
46
 
                    parent_invs.append(repository.get_inventory(p_id))
47
 
 
48
 
            inv = cset_tree.inventory
49
 
            
50
 
            # Add the texts that are not already present
51
 
            for path, ie in inv.iter_entries():
52
 
                w = repository.weave_store.get_weave_or_empty(ie.file_id,
53
 
                        repository.get_transaction())
54
 
                if ie.revision not in w:
55
 
                    repository.weave_store.add_text(ie.file_id, 
56
 
                                                    rev.revision_id,
57
 
                    cset_tree.get_file(ie.file_id).readlines(),
58
 
                    present_parents, repository.get_transaction())
59
 
 
60
 
            repository.add_revision(rev.revision_id, rev, inv)
 
38
            return install_revision(repository, rev, cset_tree)
61
39
        finally:
62
40
            repository.unlock()
63
41
 
 
42
def install_changeset(repository, changeset_reader):
 
43
    pass 
 
44
 
 
45
def install_revision(repository, rev, cset_tree):
 
46
    # install the inventory
 
47
    # TODO: Figure out how to handle ghosted revisions
 
48
    present_parents = []
 
49
    parent_invs = []
 
50
    for p_id in rev.parent_ids:
 
51
        if repository.has_revision(p_id):
 
52
            present_parents.append(p_id)
 
53
            parent_invs.append(repository.get_inventory(p_id))
 
54
 
 
55
    inv = cset_tree.inventory
 
56
    
 
57
    # Add the texts that are not already present
 
58
    for path, ie in inv.iter_entries():
 
59
        w = repository.weave_store.get_weave_or_empty(ie.file_id,
 
60
                repository.get_transaction())
 
61
        if ie.revision not in w:
 
62
            repository.weave_store.add_text(ie.file_id, 
 
63
                                            rev.revision_id,
 
64
            cset_tree.get_file(ie.file_id).readlines(),
 
65
            present_parents, repository.get_transaction())
 
66
 
 
67
    repository.add_revision(rev.revision_id, rev, inv)
 
68
 
64
69
def apply_changeset(branch, from_file, reverse=False, auto_commit=False):
65
70
    """Read in a changeset from the given file, and apply it to
66
71
    the supplied branch.