コード例 #1
0
ファイル: upgrade.py プロジェクト: jelmer/bzr-rewrite
def create_upgrade_plan(repository, generate_rebase_map, determine_new_revid,
                        revision_id=None, allow_changes=False):
    """Generate a rebase plan for upgrading revisions.

    :param repository: Repository to do upgrade in
    :param foreign_repository: Subversion repository to fetch new revisions
        from.
    :param new_mapping: New mapping to use.
    :param revision_id: Revision to upgrade (None for all revisions in
        repository.)
    :param allow_changes: Whether an upgrade is allowed to change the contents
        of revisions.
    :return: Tuple with a rebase plan and map of renamed revisions.
    """

    graph = repository.get_graph()
    upgrade_map = generate_rebase_map(revision_id)

    if not allow_changes:
        for oldrevid, newrevid in upgrade_map.iteritems():
            oldrev = repository.get_revision(oldrevid)
            newrev = repository.get_revision(newrevid)
            check_revision_changed(oldrev, newrev)

    if revision_id is None:
        heads = repository.all_revision_ids()
    else:
        heads = [revision_id]


    plan = generate_transpose_plan(graph.iter_ancestry(heads), upgrade_map,
      graph, determine_new_revid)
    def remove_parents((oldrevid, (newrevid, parents))):
        return (oldrevid, newrevid)
コード例 #2
0
ファイル: test_rebase.py プロジェクト: jelmer/bzr-rewrite
    def test_generate_transpose_plan(self):
        wt = self.make_branch_and_tree('.')
        b = wt.branch
        file('hello', 'w').write('hello world')
        wt.add('hello')
        wt.commit(message='add hello', rev_id="bla")
        file('hello', 'w').write('world')
        wt.commit(message='change hello', rev_id="bloe")
        wt.set_last_revision("bla")
        b.generate_revision_history("bla")
        file('hello', 'w').write('world')
        wt.commit(message='change hello', rev_id="bla2")
        file('hello', 'w').write('universe')
        wt.commit(message='change hello again', rev_id="bla3")
        wt.set_last_revision("bla")
        b.generate_revision_history("bla")
        file('hello', 'w').write('somebar')
        wt.commit(message='change hello yet again', rev_id="blie")
        wt.set_last_revision(NULL_REVISION)
        b.generate_revision_history(NULL_REVISION)
        wt.add('hello')
        wt.commit(message='add hello', rev_id="lala")

        b.repository.lock_read()
        graph = b.repository.get_graph()
        self.assertEquals({
            'blie': ('newblie', ('lala',))},
            generate_transpose_plan(graph.iter_ancestry(["blie"]),
            {"bla": "lala"}, graph, lambda y, _: "new"+y))
        self.assertEquals({
            'bla2': ('newbla2', ('lala',)),
            'bla3': ('newbla3', ('newbla2',)),
            'blie': ('newblie', ('lala',)),
            'bloe': ('newbloe', ('lala',))},
            generate_transpose_plan(graph.iter_ancestry(b.repository._all_revision_ids()),
            {"bla": "lala"},
            graph, lambda y, _: "new"+y))
        b.repository.unlock()
コード例 #3
0
ファイル: test_rebase.py プロジェクト: jelmer/bzr-rewrite
 def test_generate_transpose_plan_one(self):
     graph = Graph(DictParentsProvider({"bla": ("bloe",), "bloe": (), "lala": ()}))
     self.assertEquals({"bla": ("newbla", ("lala",))},
             generate_transpose_plan(graph.iter_ancestry(["bla", "bloe"]),
                 {"bloe": "lala"}, graph, lambda y, _: "new"+y))