def makeVCSRelease(self, id, branch): release = PackageRelease.query.get(id) if release is None: raise TaskError("No such release!") elif release.package is None: raise TaskError("No package attached to release") with clone_repo(release.package.repo, ref=branch, recursive=True) as repo: postReleaseCheckUpdate(self, release, repo.working_tree_dir) filename = randomString(10) + ".zip" destPath = os.path.join(app.config["UPLOAD_DIR"], filename) assert(not os.path.isfile(destPath)) archiver = GitArchiver(prefix=release.package.name, force_sub=True, main_repo_abspath=repo.working_tree_dir) archiver.create(destPath) assert(os.path.isfile(destPath)) release.url = "/uploads/" + filename release.task_id = None release.commit_hash = repo.head.object.hexsha release.approve(release.package.author) db.session.commit() return release.url
def makeVCSRelease(self, id, branch): release = PackageRelease.query.get(id) if release is None: raise TaskError("No such release!") elif release.package is None: raise TaskError("No package attached to release") gitDir, repo = cloneRepo(release.package.repo, ref=branch, recursive=True) postReleaseCheckUpdate(self, release, gitDir) try: filename = randomString(10) + ".zip" destPath = os.path.join(app.config["UPLOAD_DIR"], filename) assert (not os.path.isfile(destPath)) archiver = GitArchiver(force_sub=True, main_repo_abspath=gitDir) archiver.create(destPath) assert (os.path.isfile(destPath)) release.url = "/uploads/" + filename release.task_id = None release.commit_hash = repo.head.object.hexsha release.approve(release.package.author) db.session.commit() updateMetaFromRelease.delay(release.id, destPath) return release.url finally: shutil.rmtree(gitDir)
def makeVCSRelease(id, branch): release = PackageRelease.query.get(id) if release is None: raise TaskError("No such release!") elif release.package is None: raise TaskError("No package attached to release") gitDir, repo = cloneRepo(release.package.repo, ref=branch, recursive=True) tree = None try: tree = build_tree(gitDir, expected_type=ContentType[release.package.type.name], \ author=release.package.author.username, name=release.package.name) except MinetestCheckError as err: raise TaskError(str(err)) try: filename = randomString(10) + ".zip" destPath = os.path.join(app.config["UPLOAD_DIR"], filename) assert (not os.path.isfile(destPath)) archiver = GitArchiver(force_sub=True, main_repo_abspath=gitDir) archiver.create(destPath) assert (os.path.isfile(destPath)) release.url = "/uploads/" + filename release.task_id = None release.commit_hash = repo.head.object.hexsha if tree.meta.get("min_minetest_version"): release.min_rel = MinetestRelease.get( tree.meta["min_minetest_version"], None) if tree.meta.get("max_minetest_version"): release.max_rel = MinetestRelease.get( tree.meta["max_minetest_version"], None) release.approve(release.package.author) db.session.commit() return release.url finally: shutil.rmtree(gitDir)
def archive(self, path): a = GitArchiver(main_repo_abspath=self.path) a.create(path)
def test_git_version_parse(version, mocker): mocker.patch.object(GitArchiver, 'run_git_shell', return_value=version) assert GitArchiver.get_git_version() == (2, 21, 0, 0, 1)
def archive(self, path, exclude=True): a = GitArchiver(exclude=exclude, main_repo_abspath=self.path) a.create(path)