~edwargix/git.sr.ht

3b46dc082de3e920a0bfc6a6d8d2fd6340b1ccbb — Robin Krahl 7 years ago 1c87eb3
Resolve tags in gitsrht-update-hook instead of gitsrht.worker

This allows us to also check tags for duplicates before submitting
build jobs.
2 files changed, 13 insertions(+), 19 deletions(-)

M gitsrht-update-hook
M gitsrht/worker.py
M gitsrht-update-hook => gitsrht-update-hook +12 -10
@@ 6,7 6,7 @@ from gitsrht.types import User, Repository, RepoVisibility
db.init()
from configparser import ConfigParser
from datetime import datetime
from pygit2 import Repository as GitRepository
from pygit2 import Repository as GitRepository, Commit, Tag
import shlex
import subprocess
import sys


@@ 47,19 47,21 @@ if op == "hooks/post-update":
    for ref in refs:
        try:
            if re.match(r"^[0-9a-z]{40}$", ref): # commit
                ref = git_repo.get(ref)
                if ref.id in oids:
                    continue
                oids.add(ref.id)
                commit = git_repo.get(ref)
            elif ref.startswith("refs/"): # ref
                ref = git_repo.lookup_reference(ref).target
                if ref in oids:
                    continue
                oids.add(ref)
                target_id = git_repo.lookup_reference(ref).target
                commit = git_repo.get(target_id)
                if isinstance(commit, Tag):
                    commit = git_repo.get(commit.target)
            else:
                continue
            if not isinstance(commit, Commit):
                continue
            if commit.id in oids:
                continue
            oids.add(commit.id)
        except:
            continue
        if builds_sr_ht:
            from gitsrht.worker import do_post_update
            do_post_update(repo, git_repo, ref)
            do_post_update(repo, git_repo, commit)

M gitsrht/worker.py => gitsrht/worker.py +1 -9
@@ 6,7 6,6 @@ if not hasattr(db, "session"):
    db.init()

from celery import Celery
from pygit2 import Commit, Tag
from srht.oauth import OAuthScope
from buildsrht.manifest import Manifest
import requests


@@ 158,13 157,6 @@ def submit_builds(repo, git_repo, commit):
            print("Build started: https://builds.sr.ht/~{}/job/{}".format(
                repo.owner.username, build_id))

def do_post_update(repo, git_repo, ref):
    commit = git_repo.get(ref)
    if not commit:
        return
    if isinstance(commit, Tag):
        commit = git_repo.get(commit.target)
    if not isinstance(commit, Commit):
        return
def do_post_update(repo, git_repo, commit):
    if builds_sr_ht:
        submit_builds(repo, git_repo, commit)