by roundabout, Wednesday, 1 January 2025, 17:47:57 (1735753677), pushed by roundabout, Wednesday, 1 January 2025, 17:48:00 (1735753680)
Author identity: vlad <vlad.muntoiu@gmail.com>
5c695d2ece49db8d72aa969ee2e371691c52b5b1
celery_tasks.py
@@ -10,6 +10,7 @@ from smtplib import SMTP
from celery.utils.log import get_task_logger
from sqlalchemy.orm import make_transient
from datetime import datetime
import httpx
@shared_task(ignore_result=False)
@@ -116,6 +117,22 @@ def merge_heads(head_route, head_branch, base_route, base_branch, pr_id, simulat
elif method == "rebase":
out, err, merge_exit = common.git_command(server_repo_location, b"", "rebase", f"heads/{head_branch}", return_err=True, return_exit=True)
# Add the merge commit.
if method == "merge":
last_commit = common.git_command(server_repo_location, b"", "log",
"--pretty=format:\"%H\"", "-n", "1").strip().decode()
last_commit_info = common.git_command(server_repo_location, b"", "show", "-s",
"--format='%H%n%at%n%cn <%ce>%n%B'",
last_commit).strip().decode()
if not db.session.get(Commit, f"{base_route}/{last_commit}"):
sha, time, identity, body = last_commit_info.split("\n", 3)
if not db.session.get(Commit, f"/{base_route}/{sha}"):
commit = Commit(sha, db.session.get(User, username),
db.session.get(Repo, base_route), time, body, identity,
db.session.get(User, username))
db.session.add(commit)
pull_request.state = 1
for resolves in pull_request.resolves:
@@ -198,6 +215,18 @@ def merge_heads(head_route, head_branch, base_route, base_branch, pr_id, simulat
commit_data.pusher = db.session.get(User, username)
db.session.add(commit_data)
# Add the merge commit.
if method == "merge":
last_commit = common.git_command(server_repo_location, b"", "log", "--pretty=format:\"%H\"", "-n", "1").strip().decode()
last_commit_info = common.git_command(server_repo_location, b"", "show", "-s", "--format='%H%n%at%n%cn <%ce>%n%B'", last_commit).strip().decode().split("\n")
err += part_err
if not db.session.get(Commit, f"{base_route}/{last_commit}"):
sha, time, identity, body = last_commit_info.split("\n", 3)
if not db.session.get(Commit, f"/{base_route}/{sha}"):
commit = Commit(sha, db.session.get(User, username), db.session.get(Repo, base_route), time, body, identity, db.session.get(User, username))
db.session.add(commit)
# Consider the PR merged.
pull_request.state = 1
models.py
@@ -220,12 +220,15 @@ with (app.app_context()):
comments = db.relationship("Comment", back_populates="commit")
def __init__(self, sha, owner, repo, date, message, owner_identity, pusher):
def __init__(self, sha, owner, repo, date, message, owner_identity, pusher, owner_name=None):
self.identifier = f"{repo.route}/{sha}"
self.sha = sha
self.repo_name = repo.route
self.repo = repo
self.owner_name = owner.username
if not owner:
self.owner_name = owner_name
else:
self.owner_name = owner.username
self.pusher_name = pusher.username
self.pusher = pusher
self.author_date = datetime.fromtimestamp(int(date))
requirements.txt
@@ -47,4 +47,5 @@ flask_migrate
flask_httpauth
flask_babel
pygments
jinja2-fragments
jinja2-fragments~=0.3.0
httpx~=0.28.1