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())
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)))
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"))
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)
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)
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())
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
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))
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")))
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"))
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)
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
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())
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)