Exemplo n.º 1
0
    def test_fetch_file_from_non_branch(self):
        repos_url = self.make_svn_repository('d')

        dc = self.get_commit_editor(repos_url)
        old_trunk = dc.add_dir("old-trunk")
        lib = old_trunk.add_dir("old-trunk/lib")
        lib.add_file("old-trunk/lib/file").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        trunk = dc.add_dir("trunk")
        lib = trunk.add_dir("trunk/lib")
        lib.add_file("trunk/lib/file", "old-trunk/lib/file")
        dc.close()

        oldrepos = Repository.open(repos_url)
        oldrepos.set_layout(TrunkLayout(0))
        dir = ControlDir.create("f")
        newrepos = dir.create_repository()
        oldrepos.copy_content_into(newrepos)

        mapping = oldrepos.get_mapping()
        branch = Branch.open("%s/trunk" % repos_url)
        self.assertEquals(branch.mapping, mapping)
        self.assertEqual(
            (1, oldrepos.generate_revision_id(2, "trunk", mapping)),
            branch.last_revision_info())
Exemplo n.º 2
0
    def test_copy_contents_into(self):
        repos_url = self.make_client('d', 'dc')
        self.build_tree({'dc/foo/bla': b"data"})
        self.client_add("dc/foo")
        self.client_commit("dc", "My Message")
        self.build_tree({
            'dc/foo/blo': b"data2",
            "dc/bar/foo": b"data3",
            'dc/foo/bla': b"data"
        })
        self.client_add("dc/foo/blo")
        self.client_add("dc/bar")
        self.client_commit("dc", "Second Message")
        repository = Repository.open(repos_url)
        repository.set_layout(RootLayout())
        mapping = repository.get_mapping()

        to_controldir = ControlDir.create("e")
        to_repos = to_controldir.create_repository()

        repository.copy_content_into(
            to_repos, repository.generate_revision_id(2, "", mapping))

        self.assertTrue(
            repository.has_revision(
                repository.generate_revision_id(2, "", mapping)))
        self.assertTrue(
            repository.has_revision(
                repository.generate_revision_id(1, "", mapping)))
Exemplo n.º 3
0
    def test_fetch_complex_ids_files(self):
        dc = self.get_commit_editor(self.repos_url)
        dir = dc.add_dir("dir")
        dir.add_file("dir/adir").modify("contents")
        dc.change_prop("bzr:revision-info", "")
        dc.change_prop("bzr:file-ids", "dir\tbloe\ndir/adir\tbla\n")
        dc.close()

        dc = self.get_commit_editor(self.repos_url)
        dc.add_file("bdir", "dir/adir")
        dir = dc.open_dir("dir")
        dir.delete("dir/adir")
        dc.change_prop("bzr:revision-info", "properties: \n")
        dc.change_prop("bzr:file-ids", "bdir\tbla\n")
        dc.close()

        oldrepos = Repository.open(self.repos_url)
        dir = ControlDir.create("f")
        newrepos = dir.create_repository()
        oldrepos.copy_content_into(newrepos)
        mapping = oldrepos.get_mapping()
        tree = newrepos.revision_tree(oldrepos.generate_revision_id(2, u"", mapping))
        self.assertEquals("bloe", tree.path2id("dir"))
        self.assertIs(None, tree.path2id("dir/adir"))
        self.assertEquals("bla", tree.path2id("bdir"))
Exemplo n.º 4
0
def push_branch(
    source_branch: Branch,
    url: str,
    vcs_type: str,
    overwrite=False,
    stop_revision=None,
    tag_selector=None,
    possible_transports: Optional[List[Transport]] = None,
) -> None:
    url, params = urlutils.split_segment_parameters(url)
    branch_name = params.get("branch")
    if branch_name is not None:
        branch_name = urlutils.unquote(branch_name)
    if vcs_type is None:
        vcs_type = source_branch.controldir.cloning_metadir()
    try:
        target = ControlDir.open(url, possible_transports=possible_transports)
    except NotBranchError:
        target = ControlDir.create(url,
                                   format=vcs_type,
                                   possible_transports=possible_transports)

    target.push_branch(source_branch,
                       revision_id=stop_revision,
                       overwrite=overwrite,
                       name=branch_name,
                       tag_selector=tag_selector)
Exemplo n.º 5
0
    def test_shared_import_rootlayout_empty(self):
        dir = ControlDir.create("e")
        dir.create_repository(shared=True)

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           RootLayout(),
                           create_shared_repo=True)
Exemplo n.º 6
0
    def test_shared_import_continue(self):
        dir = ControlDir.create("e")
        dir.create_repository(shared=True)

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        self.assertTrue(Repository.open("e").is_shared())
Exemplo n.º 7
0
async def _bzr_open_repo(vcs_manager, db, package):
    async with db.acquire() as conn:
        if not await package_exists(conn, package):
            raise web.HTTPNotFound()
    repo = vcs_manager.get_repository(package, "bzr")
    if repo is None:
        controldir = ControlDir.create(
            vcs_manager.get_repository_url(package, "bzr"))
        repo = controldir.create_repository(shared=True)
    return repo
Exemplo n.º 8
0
    def test_shared_import_old_repos_fails(self):
        dir = ControlDir.create("e",
                                format=format_registry.make_controldir('knit'))
        dir.create_repository(shared=True)

        self.assertRaises(
            IncompatibleRepositories,
            lambda: convert_repository(Repository.open(self.repos_url),
                                       "e",
                                       TrunkLayout(0),
                                       create_shared_repo=True,
                                       working_trees=False))
Exemplo n.º 9
0
    def test_shared_import_without_wt(self):
        dir = ControlDir.create("e")
        dir.create_repository(shared=True)

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True,
                           working_trees=False)

        self.assertFalse(
            os.path.isfile(os.path.join(self.test_dir, "e", "trunk", "file")))
Exemplo n.º 10
0
    def test_fetch_fileid_renames(self):
        dc = self.get_commit_editor(self.repos_url)
        dc.add_file("test").modify("data")
        dc.change_prop("bzr:file-ids", "test\tbla\n")
        dc.change_prop("bzr:revision-info", "")
        dc.close()

        oldrepos = Repository.open(self.repos_url)
        dir = ControlDir.create("f")
        newrepos = dir.create_repository()
        oldrepos.copy_content_into(newrepos)
        mapping = oldrepos.get_mapping()
        self.assertEqual("bla", newrepos.revision_tree(
            oldrepos.generate_revision_id(1, u"", mapping)).path2id("test"))
Exemplo n.º 11
0
    def test_fetch_invalid_ghosts(self):
        dc = self.get_commit_editor(self.repos_url)
        dc.add_file("bla").modify("data")
        dc.change_prop("bzr:ancestry:v3-none", "a ghost\n")
        dc.close()

        oldrepos = Repository.open(self.repos_url)
        dir = ControlDir.create("f")
        newrepos = dir.create_repository()
        oldrepos.copy_content_into(newrepos)

        mapping = oldrepos.get_mapping()

        rev = newrepos.get_revision(oldrepos.generate_revision_id(1, u"", mapping))
        self.assertEqual([oldrepos.generate_revision_id(0, u"", mapping)], rev.parent_ids)
Exemplo n.º 12
0
async def _git_open_repo(vcs_manager, db, package):
    repo = vcs_manager.get_repository(package, "git")

    if repo is None:
        async with db.acquire() as conn:
            if not await package_exists(conn, package):
                raise web.HTTPNotFound()
        controldir = ControlDir.create(
            vcs_manager.get_repository_url(package, "git"),
            format=format_registry.get("git-bare")(),
        )
        logging.info("Created missing git repository for %s at %s", package,
                     controldir.user_url)
        return controldir.open_repository()
    else:
        return repo
Exemplo n.º 13
0
 def run(self, from_location, to_location=None):
     from breezy.controldir import ControlDir
     if to_location is None:
         to_location = os.path.basename(from_location.rstrip("/\\"))
     from_dir = ControlDir.open(from_location)
     try:
         to_dir = ControlDir.open(to_location)
     except errors.NotBranchError:
         to_dir = ControlDir.create(to_location)
     try:
         to_repo = to_dir.open_repository()
     except errors.NoRepositoryPresent:
         to_repo = to_dir.create_repository()
     try:
         to_branch = to_dir.open_branch()
     except errors.NotBranchError:
         to_branch = to_dir.create_branch()
     to_branch.pull(from_dir.open_branch())
Exemplo n.º 14
0
    def test_control_code_msg(self):
        if ra.version()[1] >= 5:
            raise TestSkipped("Test not runnable with Subversion >= 1.5")

        repos_url = self.make_svn_repository('d')

        cb = self.get_commit_editor(repos_url)
        cb.add_dir("trunk")
        cb.close("\x24")

        cb = self.get_commit_editor(repos_url)
        trunk = cb.open_dir("trunk")
        hosts = trunk.add_file("trunk/hosts")
        hosts.modify(b"hej2")
        cb.close("bla\xfcbla")  #2

        cb = self.get_commit_editor(repos_url)
        trunk = cb.open_dir("trunk")
        trunk.open_file("trunk/hosts").modify(b"hej3")
        cb.close("a\x0cb")  #3

        cb = self.get_commit_editor(repos_url)
        branches = cb.add_dir("branches")
        foobranch = branches.add_dir("branches/foobranch")
        foobranch.add_file("branches/foobranch/file").modify()
        cb.close("foohosts")  #4

        oldrepos = Repository.open(repos_url)
        oldrepos.set_layout(TrunkLayout(0))
        dir = ControlDir.create("f")
        newrepos = dir.create_repository()
        oldrepos.copy_content_into(newrepos)

        mapping = oldrepos.get_mapping()

        self.assertTrue(
            newrepos.has_revision(
                oldrepos.generate_revision_id(1, "trunk", mapping)))
        self.assertTrue(
            newrepos.has_revision(
                oldrepos.generate_revision_id(2, "trunk", mapping)))
        self.assertTrue(
            newrepos.has_revision(
                oldrepos.generate_revision_id(3, "trunk", mapping)))
        self.assertTrue(
            newrepos.has_revision(
                oldrepos.generate_revision_id(4, "branches/foobranch",
                                              mapping)))
        self.assertFalse(
            newrepos.has_revision(
                oldrepos.generate_revision_id(4, "trunk", mapping)))
        self.assertFalse(
            newrepos.has_revision(oldrepos.generate_revision_id(
                2, "", mapping)))

        rev = newrepos.get_revision(
            oldrepos.generate_revision_id(1, "trunk", mapping))
        self.assertEqual("$", rev.message)

        rev = newrepos.get_revision(
            oldrepos.generate_revision_id(2, "trunk", mapping))
        self.assertEqual('bla\xc3\xbcbla', rev.message.encode("utf-8"))

        rev = newrepos.get_revision(
            oldrepos.generate_revision_id(3, "trunk", mapping))
        self.assertEqual(u"a\\x0cb", rev.message)