roundabout,
created on Wednesday, 31 January 2024, 19:04:21 (1706727861),
received on Wednesday, 31 July 2024, 06:54:41 (1722408881)
Author identity: vlad <vlad.muntoiu@gmail.com>
730f993a357053837915a9be4ac2a249122a3b0f
app.py
@@ -966,8 +966,9 @@ def repository_prs_merge(username, repository):
pull_request.base_route,
pull_request.base_branch,
)
task_result = worker.AsyncResult(result.id)
flask.flash(Markup(f"Merging PR in task <a href='/task/{ result.id }'>{result.id}</a>"), f"task {result.id}")
flask.flash(Markup(f"Merging PR in task <a href='/task/{result.id}'>{result.id}</a>"), f"task {result.id}")
db.session.delete(pull_request)
db.session.commit()
@@ -977,11 +978,12 @@ def repository_prs_merge(username, repository):
return flask.redirect(".", 303)
@repositories.route("/task/<task_id>")
@app.route("/task/<task_id>")
def task_monitor(task_id):
result = celery_tasks.merge_heads.AsyncResult(task_id)
task_result = worker.AsyncResult(task_id)
print(task_result.status)
return flask.render_template("task-monitor.html", result=result)
return flask.render_template("task-monitor.html", result=task_result)
@repositories.route("/<username>/<repository>/prs/delete", methods=["POST"])
celery_tasks.py
@@ -25,7 +25,16 @@ def merge_heads(head_route, head_branch, base_route, base_branch):
if not os.path.isdir(server_repo_location):
raise FileNotFoundError(f"Repo {server_repo_location} not found, cannot merge.")
git_command(server_repo_location, b"", "checkout", "-f", f"heads/{base_branch}")
out, err = git_command(server_repo_location, b"", "merge", f"heads/{head_branch}", return_err=True)
if base_route == head_route:
git_command(server_repo_location, b"", "checkout", f"{base_branch}")
out, err = git_command(server_repo_location, b"", "merge", "--no-ff", f"heads/{head_branch}", return_err=True)
return out, err
return out, err
remote_url = os.path.join(config.BASE_DOMAIN, "git", base_route.lstrip("/"))
git_command(server_repo_location, b"", "remote", "add", "NEW", remote_url)
git_command(server_repo_location, b"", "remote", "update")
git_command(server_repo_location, b"", "checkout", f"{base_branch}")
git_command(server_repo_location, b"", "merge", "--allow-unrelated-histories", f"NEW/{head_branch}")
git_command(server_repo_location, b"", "remote", "rm", "NEW")
misc_utils.py
@@ -5,7 +5,6 @@ from models import *
def git_command(repo, data, *args, return_err=False):
print(repo)
if not os.path.isdir(repo):
raise FileNotFoundError(f"Repo {repo} not found")
env = os.environ.copy()
@@ -21,6 +20,7 @@ def git_command(repo, data, *args, return_err=False):
out, err = proc.communicate()
if return_err:
return out, err
return out
templates/task-monitor.html
@@ -5,7 +5,9 @@
{% block breadcrumbs %}
<li><a href="/task/{{ result.id }}">Task {{ result.id }}</a></li>
{% endblock %}
<h1>Task results</h1>
<pre>
{{ result.collect() }}
</pre>
{% block content %}
<x-frame style="--width: 896px;" class="flexible-space">
<h1>Task results</h1>
<pre>{{ result.get() }}</pre>
</x-frame>
{% endblock %}