diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py index ebe8e1e..8925f0e 100644 --- a/app/tasks/importtasks.py +++ b/app/tasks/importtasks.py @@ -17,6 +17,7 @@ import flask, json, os, git, tempfile, shutil, gitdb from git import GitCommandError +from git_archive_all import GitArchiver from flask_sqlalchemy import SQLAlchemy from urllib.error import HTTPError import urllib.request @@ -380,29 +381,31 @@ def makeVCSRelease(id, branch): elif release.package is None: raise TaskError("No package attached to release") - urlmaker = None - url = urlparse(release.package.repo) - if url.netloc == "github.com": - return makeVCSReleaseFromGithub(id, branch, release, url) - else: - gitDir, repo = cloneRepo(release.package.repo, ref=branch, recursive=True) + # url = urlparse(release.package.repo) + # if url.netloc == "github.com": + # return makeVCSReleaseFromGithub(id, branch, release, url) - try: - filename = randomString(10) + ".zip" - destPath = os.path.join(app.config["UPLOAD_DIR"], filename) - with open(destPath, "wb") as fp: - repo.archive(fp, format="zip") + gitDir, repo = cloneRepo(release.package.repo, ref=branch, recursive=True) - release.url = "/uploads/" + filename - release.task_id = None - release.commit_hash = repo.head.object.hexsha - release.approve(release.package.author) - print(release.url) - db.session.commit() + try: + filename = randomString(10) + ".zip" + destPath = os.path.join(app.config["UPLOAD_DIR"], filename) - return release.url - finally: - shutil.rmtree(gitDir) + 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) + print(release.url) + db.session.commit() + + return release.url + finally: + shutil.rmtree(gitDir) @celery.task() def importRepoScreenshot(id): diff --git a/requirements.txt b/requirements.txt index fd73ebc..6f236bc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,6 +15,7 @@ beautifulsoup4~=4.6 celery==4.1.1 kombu==4.2.0 GitPython~=2.1 +git-archive-all~=1.20 lxml~=4.2 pillow~=6.2 pyScss~=1.3