Fixed Git integration
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import hashlib
|
||||
import hmac
|
||||
import json
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Request
|
||||
@@ -13,6 +14,7 @@ from app.db.models import ChatSession, Message, ProjectBinding
|
||||
from app.projects.service import ProjectService
|
||||
|
||||
router = APIRouter()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _verify_gitea_signature(body: bytes, signature: str | None, secret: str) -> bool:
|
||||
@@ -90,9 +92,27 @@ async def gitea_webhook(request: Request, db: Session = Depends(get_db)) -> dict
|
||||
if not binding:
|
||||
return {"ok": True, "skipped": "unknown repo"}
|
||||
|
||||
commits = payload.get("commits") or []
|
||||
commits = list(payload.get("commits") or [])
|
||||
if not commits:
|
||||
head = payload.get("head_commit")
|
||||
if head:
|
||||
commits = [head]
|
||||
|
||||
logger.info(
|
||||
"Gitea push %s/%s ref=%s commits=%d",
|
||||
owner,
|
||||
repo_name,
|
||||
payload.get("ref", ""),
|
||||
len(commits),
|
||||
)
|
||||
|
||||
service = ProjectService(db)
|
||||
results = service.process_push(owner, repo_name, commits)
|
||||
if results:
|
||||
logger.info("Gitea push results: %s", results)
|
||||
else:
|
||||
logger.warning("Gitea push: no close actions for %s/%s", owner, repo_name)
|
||||
|
||||
_post_close_notice(results, owner, repo_name)
|
||||
|
||||
return {"ok": True, "results": results}
|
||||
return {"ok": True, "results": results, "commits_processed": len(commits)}
|
||||
|
||||
Reference in New Issue
Block a user