コード例 #1
0
ファイル: rebase.py プロジェクト: edsrzf/dotfiles
    def __call__(self, oldrevid, newrevid, new_parents):
        """Replay a commit by simply commiting the same snapshot with different
        parents.

        :param oldrevid: Revision id of the revision to copy.
        :param newrevid: Revision id of the revision to create.
        :param new_parents: Revision ids of the new parent revisions.
        """
        assert isinstance(new_parents, tuple), "CommitBuilderRevisionRewriter: Expected tuple for %r" % new_parents
        mutter('creating copy %r of %r with new parents %r' %
                                   (newrevid, oldrevid, new_parents))
        oldrev = self.repository.get_revision(oldrevid)

        revprops = dict(oldrev.properties)
        revprops[REVPROP_REBASE_OF] = oldrevid

        builder = self.repository.get_commit_builder(branch=None,
            parents=new_parents, config=Config(), committer=oldrev.committer,
            timestamp=oldrev.timestamp, timezone=oldrev.timezone,
            revprops=revprops, revision_id=newrevid)
        try:
            # Check what new_ie.file_id should be
            # use old and new parent inventories to generate new_id map
            nonghost_oldparents = self._get_present_revisions(oldrev.parent_ids)
            nonghost_newparents = self._get_present_revisions(new_parents)
            oldtree = self.repository.revision_tree(oldrevid)
            if self.map_ids:
                fileid_map = map_file_ids(self.repository, nonghost_oldparents,
                    nonghost_newparents)
                mappedtree = MapTree(oldtree, fileid_map)
            else:
                mappedtree = oldtree
            old_parent_invs = list(self.repository.iter_inventories(nonghost_oldparents))
            new_parent_invs = list(self.repository.iter_inventories(nonghost_newparents))
            pb = ui.ui_factory.nested_progress_bar()
            try:
                for i, (path, old_ie) in enumerate(mappedtree.inventory.iter_entries()):
                    pb.update('upgrading file', i, len(mappedtree.inventory))
                    ie = self._process_file(old_ie, oldtree, oldrevid, newrevid,
                        old_parent_invs, new_parent_invs, path)
                    builder.record_entry_contents(ie,
                            new_parent_invs, path, mappedtree,
                            mappedtree.path_content_summary(path))
            finally:
                pb.finished()
            builder.finish_inventory()
            return builder.commit(oldrev.message)
        except:
            builder.abort()
            raise
コード例 #2
0
ファイル: test_maptree.py プロジェクト: jelmer/bzr-rewrite
class EmptyMapTreeTests(TestCaseWithTransport):

    def setUp(self):
        super(EmptyMapTreeTests, self).setUp()
        tree = self.make_branch_and_tree('branch')
        self.oldtree = tree

    def test_has_filename(self):
        self.oldtree.lock_write()
        builder = TreeBuilder()
        builder.start_tree(self.oldtree)
        builder.build(['foo'])
        builder.finish_tree()
        self.maptree = MapTree(self.oldtree, {})
        self.oldtree.unlock()
        self.assertTrue(self.maptree.has_filename('foo'))
        self.assertTrue(self.oldtree.has_filename('foo'))
        self.assertFalse(self.maptree.has_filename('bar'))

    def test_path2id(self):
        self.oldtree.lock_write()
        self.addCleanup(self.oldtree.unlock)
        builder = TreeBuilder()
        builder.start_tree(self.oldtree)
        builder.build(['foo'])
        builder.build(['bar'])
        builder.build(['bla'])
        builder.finish_tree()
        self.maptree = MapTree(self.oldtree, {})
        self.assertEquals(self.oldtree.path2id("foo"),
                          self.maptree.path2id("foo"))

    def test_id2path(self):
        self.oldtree.lock_write()
        self.addCleanup(self.oldtree.unlock)
        builder = TreeBuilder()
        builder.start_tree(self.oldtree)
        builder.build(['foo'])
        builder.build(['bar'])
        builder.build(['bla'])
        builder.finish_tree()
        self.maptree = MapTree(self.oldtree, {})
        self.assertEquals("foo",
                self.maptree.id2path(self.maptree.path2id("foo")))

    def test_has_id(self):
        self.oldtree.lock_write()
        self.addCleanup(self.oldtree.unlock)
        builder = TreeBuilder()
        builder.start_tree(self.oldtree)
        builder.build(['foo'])
        builder.build(['bar'])
        builder.build(['bla'])
        builder.finish_tree()
        self.maptree = MapTree(self.oldtree, {})
        self.assertTrue(self.maptree.has_id(
                              self.maptree.path2id("foo")))
        self.assertFalse(self.maptree.has_id("bar"))
コード例 #3
0
ファイル: test_maptree.py プロジェクト: jelmer/bzr-rewrite
 def test_has_filename(self):
     self.oldtree.lock_write()
     builder = TreeBuilder()
     builder.start_tree(self.oldtree)
     builder.build(['foo'])
     builder.finish_tree()
     self.maptree = MapTree(self.oldtree, {})
     self.oldtree.unlock()
     self.assertTrue(self.maptree.has_filename('foo'))
     self.assertTrue(self.oldtree.has_filename('foo'))
     self.assertFalse(self.maptree.has_filename('bar'))
コード例 #4
0
ファイル: test_maptree.py プロジェクト: jelmer/bzr-rewrite
 def test_id2path(self):
     self.oldtree.lock_write()
     self.addCleanup(self.oldtree.unlock)
     builder = TreeBuilder()
     builder.start_tree(self.oldtree)
     builder.build(['foo'])
     builder.build(['bar'])
     builder.build(['bla'])
     builder.finish_tree()
     self.maptree = MapTree(self.oldtree, {})
     self.assertEquals("foo",
             self.maptree.id2path(self.maptree.path2id("foo")))
コード例 #5
0
ファイル: test_maptree.py プロジェクト: jelmer/bzr-rewrite
 def test_has_id(self):
     self.oldtree.lock_write()
     self.addCleanup(self.oldtree.unlock)
     builder = TreeBuilder()
     builder.start_tree(self.oldtree)
     builder.build(['foo'])
     builder.build(['bar'])
     builder.build(['bla'])
     builder.finish_tree()
     self.maptree = MapTree(self.oldtree, {})
     self.assertTrue(self.maptree.has_id(
                           self.maptree.path2id("foo")))
     self.assertFalse(self.maptree.has_id("bar"))