diff --git a/pagure/hooks/files/fedmsg_hook.py b/pagure/hooks/files/fedmsg_hook.py index 17987c4..57e149b 100755 --- a/pagure/hooks/files/fedmsg_hook.py +++ b/pagure/hooks/files/fedmsg_hook.py @@ -71,6 +71,7 @@ seen = [] for line in sys.stdin.readlines(): (oldrev, newrev, refname) = line.strip().split(' ', 2) + forced = False if set(newrev) == set(['0']): print "Deleting a reference/branch, so we won't run the "\ "pagure hook" @@ -79,11 +80,13 @@ for line in sys.stdin.readlines(): print "New reference/branch" oldrev = '^%s' % oldrev elif pagure.lib.git.is_forced_push(oldrev, newrev, abspath): + forced = True base = pagure.lib.git.get_base_revision(oldrev, newrev, abspath) if base: oldrev = base[0] - revs = pagure.lib.git.get_revs_between(oldrev, newrev, abspath) + revs = pagure.lib.git.get_revs_between( + oldrev, newrev, abspath, forced=forced) project_name = pagure.lib.git.get_repo_name(abspath) username = pagure.lib.git.get_username(abspath) project = pagure.lib.get_project(pagure.SESSION, project_name, username) diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 24e106a..36e6e36 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -797,10 +797,13 @@ def read_git_lines(args, abspath, keepends=False, **kw): ).splitlines(keepends) -def get_revs_between(torev, fromrev, abspath): +def get_revs_between(torev, fromrev, abspath, forced=False): """ Yield revisions between HEAD and BASE. """ cmd = ['rev-list', '%s...%s' % (torev, fromrev)] + if forced: + head = get_default_branch(abspath) + cmd.append('^%s' % head) if set(fromrev) == set('0'): cmd = ['rev-list', '%s' % torev] elif set(torev) == set('0') or set(torev) == set('^0'):