/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.5.17 by John Arbash Meinel
adding apply-changset, plus more meta information.
1
"""\
1185.82.130 by Aaron Bentley
Rename changesets to revision bundles
2
This contains functionality for installing bundles into repositories
0.5.17 by John Arbash Meinel
adding apply-changset, plus more meta information.
3
"""
4
1185.82.78 by Aaron Bentley
Cleanups
5
import bzrlib.ui
1185.82.84 by Aaron Bentley
Moved stuff around
6
from bzrlib.progress import ProgressPhase
7
from bzrlib.merge import Merger
8
from bzrlib.repository import install_revision
1185.82.81 by Aaron Bentley
Remove unused functionality
9
0.5.67 by John Arbash Meinel
Working on apply_changeset
10
1185.82.130 by Aaron Bentley
Rename changesets to revision bundles
11
def install_bundle(repository, bundle_reader):
1185.82.63 by Aaron Bentley
Added install revision progress bar
12
    pb = bzrlib.ui.ui_factory.nested_progress_bar()
1185.82.64 by Aaron Bentley
Lock repository while installing revisions
13
    repository.lock_write()
1185.82.63 by Aaron Bentley
Added install revision progress bar
14
    try:
1185.82.130 by Aaron Bentley
Rename changesets to revision bundles
15
        real_revisions = bundle_reader.info.real_revisions
1185.82.63 by Aaron Bentley
Added install revision progress bar
16
        for i, revision in enumerate(reversed(real_revisions)):
17
            pb.update("Install revisions",i, len(real_revisions))
18
            if repository.has_revision(revision.revision_id):
19
                continue
1185.82.130 by Aaron Bentley
Rename changesets to revision bundles
20
            cset_tree = bundle_reader.revision_tree(repository,
1185.82.63 by Aaron Bentley
Added install revision progress bar
21
                                                       revision.revision_id)
22
            install_revision(repository, revision, cset_tree)
23
    finally:
1185.82.64 by Aaron Bentley
Lock repository while installing revisions
24
        repository.unlock()
1185.82.63 by Aaron Bentley
Added install revision progress bar
25
        pb.finished()
1185.82.40 by Aaron Bentley
Started work on testing install_revisions/handling empty changesets
26
1185.82.81 by Aaron Bentley
Remove unused functionality
27
1185.82.130 by Aaron Bentley
Rename changesets to revision bundles
28
def merge_bundle(reader, tree, check_clean, merge_type, 
1185.82.84 by Aaron Bentley
Moved stuff around
29
                    reprocess, show_base):
1185.82.130 by Aaron Bentley
Rename changesets to revision bundles
30
    """Merge a revision bundle into the current tree."""
1185.82.84 by Aaron Bentley
Moved stuff around
31
    pb = bzrlib.ui.ui_factory.nested_progress_bar()
1185.82.62 by Aaron Bentley
Don't fail if some data is already installed
32
    try:
1185.82.84 by Aaron Bentley
Moved stuff around
33
        pp = ProgressPhase("Merge phase", 6, pb)
34
        pp.next_phase()
1185.82.130 by Aaron Bentley
Rename changesets to revision bundles
35
        install_bundle(tree.branch.repository, reader)
1185.82.84 by Aaron Bentley
Moved stuff around
36
        merger = Merger(tree.branch, this_tree=tree, pb=pb)
37
        merger.pp = pp
38
        merger.pp.next_phase()
39
        merger.check_basis(check_clean, require_commits=False)
40
        merger.other_rev_id = reader.info.target
41
        merger.other_tree = merger.revision_tree(reader.info.target)
42
        merger.other_basis = reader.info.target
43
        merger.pp.next_phase()
44
        merger.find_base()
45
        if merger.base_rev_id == merger.other_rev_id:
46
            note("Nothing to do.")
47
            return 0
48
        merger.merge_type = merge_type
49
        merger.show_base = show_base
50
        merger.reprocess = reprocess
51
        conflicts = merger.do_merge()
52
        merger.set_pending()
53
    finally:
54
        pb.clear()
55
    return conflicts