|
Pierre-Yves Chibon |
4cce24 |
#!/usr/bin/env python
|
|
Pierre-Yves Chibon |
4cce24 |
|
|
Vadim Rutkovsky |
9b6a62 |
from __future__ import print_function
|
|
Vadim Rutkovsky |
9b6a62 |
|
|
Pierre-Yves Chibon |
4cce24 |
import os
|
|
Pierre-Yves Chibon |
4cce24 |
import sys
|
|
Pierre-Yves Chibon |
4cce24 |
|
|
Pierre-Yves Chibon |
4cce24 |
import fedmsg
|
|
Pierre-Yves Chibon |
4cce24 |
import fedmsg.config
|
|
Pierre-Yves Chibon |
4cce24 |
|
|
Pierre-Yves Chibon |
fe08db |
|
|
Pierre-Yves Chibon |
fe08db |
if 'PAGURE_CONFIG' not in os.environ \
|
|
Pierre-Yves Chibon |
fe08db |
and os.path.exists('/etc/pagure/pagure.cfg'):
|
|
Pierre-Yves Chibon |
fe08db |
os.environ['PAGURE_CONFIG'] = '/etc/pagure/pagure.cfg'
|
|
Pierre-Yves Chibon |
fe08db |
|
|
Pierre-Yves Chibon |
4edf24 |
|
|
Pierre-Yves Chibon |
de6f12 |
import pagure # noqa: E402
|
|
Pierre-Yves Chibon |
de6f12 |
import pagure.lib.git # noqa: E402
|
|
Pierre-Yves Chibon |
fe08db |
|
|
Pierre-Yves Chibon |
4cce24 |
abspath = os.path.abspath(os.environ['GIT_DIR'])
|
|
Pierre-Yves Chibon |
4cce24 |
|
|
Pierre-Yves Chibon |
fe08db |
|
|
Vadim Rutkovsky |
9b6a62 |
print("Emitting a message to the fedmsg bus.")
|
|
Pierre-Yves Chibon |
4cce24 |
config = fedmsg.config.load_config([], None)
|
|
Pierre-Yves Chibon |
4cce24 |
config['active'] = True
|
|
Pierre-Yves Chibon |
4cce24 |
config['endpoints']['relay_inbound'] = config['relay_inbound']
|
|
Pierre-Yves Chibon |
c26108 |
fedmsg.init(name='relay_inbound', **config)
|
|
Pierre-Yves Chibon |
4cce24 |
|
|
Pierre-Yves Chibon |
b130e5 |
_config = pagure.config.config.reload_config()
|
|
Pierre-Yves Chibon |
4cce24 |
|
|
Pierre-Yves Chibon |
4cce24 |
seen = []
|
|
Pierre-Yves Chibon |
4cce24 |
|
|
Pierre-Yves Chibon |
4cce24 |
# Read in all the rev information git-receive-pack hands us.
|
|
Pierre-Yves Chibon |
fe08db |
for line in sys.stdin.readlines():
|
|
Pierre-Yves Chibon |
fe08db |
(oldrev, newrev, refname) = line.strip().split(' ', 2)
|
|
Pierre-Yves Chibon |
c43f06 |
|
|
Pierre-Yves Chibon |
72398f |
forced = False
|
|
Pierre-Yves Chibon |
33b2ee |
if set(newrev) == set(['0']):
|
|
Vadim Rutkovsky |
9b6a62 |
print("Deleting a reference/branch, so we won't run the "
|
|
Vadim Rutkovsky |
9b6a62 |
"pagure hook")
|
|
Pierre-Yves Chibon |
daf4ee |
break
|
|
Pierre-Yves Chibon |
d75ae7 |
elif set(oldrev) == set(['0']):
|
|
Vadim Rutkovsky |
9b6a62 |
print("New reference/branch")
|
|
Pierre-Yves Chibon |
d75ae7 |
oldrev = '^%s' % oldrev
|
|
Pierre-Yves Chibon |
daf4ee |
elif pagure.lib.git.is_forced_push(oldrev, newrev, abspath):
|
|
Pierre-Yves Chibon |
72398f |
forced = True
|
|
Pierre-Yves Chibon |
daf4ee |
base = pagure.lib.git.get_base_revision(oldrev, newrev, abspath)
|
|
Pierre-Yves Chibon |
daf4ee |
if base:
|
|
Pierre-Yves Chibon |
daf4ee |
oldrev = base[0]
|
|
Pierre-Yves Chibon |
c43f06 |
|
|
Pierre-Yves Chibon |
72398f |
revs = pagure.lib.git.get_revs_between(
|
|
Clement Verna |
bdd561 |
oldrev, newrev, abspath, refname, forced=forced)
|
|
Pierre-Yves Chibon |
08f92e |
|
|
Pierre-Yves Chibon |
1a079d |
project_name = pagure.lib.git.get_repo_name(abspath)
|
|
Pierre-Yves Chibon |
1a079d |
username = pagure.lib.git.get_username(abspath)
|
|
Pierre-Yves Chibon |
08f92e |
namespace = pagure.lib.git.get_repo_namespace(abspath)
|
|
Pierre-Yves Chibon |
c50e81 |
project = pagure.lib._get_project(
|
|
Pierre-Yves Chibon |
edbdc9 |
pagure.SESSION, project_name, username, namespace=namespace,
|
|
Pierre-Yves Chibon |
b130e5 |
case=_config.get('CASE_SENSITIVE', False))
|
|
Pierre-Yves Chibon |
edbdc9 |
|
|
Pierre-Yves Chibon |
1a079d |
if not project:
|
|
Pierre-Yves Chibon |
1a079d |
project = project_name
|
|
Pierre-Yves Chibon |
4cce24 |
|
|
Pierre-Yves Chibon |
700c33 |
auths = set()
|
|
Pierre-Yves Chibon |
4611fe |
for rev in revs:
|
|
Pierre-Yves Chibon |
00d774 |
email = pagure.lib.git.get_author_email(rev, abspath)
|
|
Pierre-Yves Chibon |
00d774 |
name = pagure.lib.git.get_author(rev, abspath)
|
|
Pierre-Yves Chibon |
c8fa3b |
author = pagure.lib.search_user(pagure.SESSION, email=email) or name
|
|
Pierre-Yves Chibon |
700c33 |
auths.add(author)
|
|
Pierre-Yves Chibon |
700c33 |
|
|
Pierre-Yves Chibon |
700c33 |
authors = []
|
|
Pierre-Yves Chibon |
700c33 |
for author in auths:
|
|
Pierre-Yves Chibon |
700c33 |
if isinstance(author, basestring):
|
|
Pierre-Yves Chibon |
700c33 |
author = author
|
|
Pierre-Yves Chibon |
700c33 |
else:
|
|
Pierre-Yves Chibon |
700c33 |
author = author.to_json(public=True)
|
|
Pierre-Yves Chibon |
700c33 |
authors.append(author)
|
|
Pierre-Yves Chibon |
4611fe |
|
|
Pierre-Yves Chibon |
95c17c |
if revs:
|
|
Pierre-Yves Chibon |
95c17c |
revs.reverse()
|
|
Vadim Rutkovsky |
9b6a62 |
print("* Publishing information for %i commits" % len(revs))
|
|
Pierre-Yves Chibon |
0f173e |
pagure.lib.notify.log(
|
|
Pierre-Yves Chibon |
0f173e |
project=project,
|
|
Pierre-Yves Chibon |
0f173e |
topic="git.receive",
|
|
Pierre-Yves Chibon |
be5513 |
msg=dict(
|
|
Pierre-Yves Chibon |
95c17c |
total_commits=len(revs),
|
|
Pierre-Yves Chibon |
95c17c |
start_commit=revs[0],
|
|
Pierre-Yves Chibon |
95c17c |
end_commit=revs[-1],
|
|
Pierre-Yves Chibon |
be5513 |
branch=refname,
|
|
Pierre-Yves Chibon |
be5513 |
forced=forced,
|
|
Pierre-Yves Chibon |
52a441 |
authors=list(authors),
|
|
Pierre-Yves Chibon |
a22558 |
agent=os.environ['GL_USER'],
|
|
Pierre-Yves Chibon |
c84343 |
repo=project.to_json(public=True)
|
|
Pierre-Yves Chibon |
c84343 |
if not isinstance(project, basestring) else project,
|
|
Pierre-Yves Chibon |
be5513 |
),
|
|
Pierre-Yves Chibon |
4edf24 |
redis=pagure.lib.REDIS,
|
|
Pierre-Yves Chibon |
4cce24 |
)
|