{"action":"created","comment":{"url":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/comments/90654489","pull_request_review_id":11170864,"id":90654489,"diff_hunk":"@@ -688,140 +674,104 @@ def get_dist_tag(self):\n         return tag\n \n     def _update_tasks(self, task_id, state):\n-        cwd = os.getcwd()\n-        tmp = tempfile.mkdtemp(prefix='thn-rh', dir='/var/tmp')\n-        os.chdir(tmp)\n-\n-        bz = \"\"\n-        bug = None\n-        rh_stuff = None\n-        text = 'Scratch build %s http://koji.fedoraproject.org/koji/taskinfo?taskID=%s'\n-        # Remember BZ from old trigger which we are looking for.\n-        # First of all we will check whether old task was finished\n+        old_task_id = old_task = None\n+        new_task_id = new_task = None\n+\n+        # find matching tasks\n         if task_id in self.old_triggered_task_ids:\n             self.old_triggered_task_ids[task_id][1] = state\n-            bz, old_state, package, old_version = self.old_triggered_task_ids[task_id]\n-            # if state is CLOSED, then build was finished properly\n-            for new_task_id, values in six.iteritems(self.new_triggered_task_ids):\n-                (new_bz, new_state, new_version, new_package) = values\n-                if int(new_bz.bug_id) == int(bz.bug_id):\n-                    if old_state == 'CLOSED':\n-                        # if koji build is finished\n-                        if new_state is not None:\n-                            # Koji build was done properly as for old as for new builds\n-                            # rebase-helper is not called\n-                            if new_state == 'CANCELED':\n-                                bug = None\n-                                rh_stuff = None\n-                            else:\n-                                bug = bz\n-                                rh_stuff = self.buildsys.rebase_helper_checkers(new_version,\n-                                                                                str(task_id),\n-                                                                                str(new_task_id),\n-                                                                                tmp)\n-                                text = text % (new_state, new_task_id)\n-                                self.bugzilla.follow_up(text, bug)\n-                            # new build was cancelled. We do not have nothing to do.\n-                            self.new_triggered_task_ids.pop(new_task_id)\n-                            self.old_triggered_task_ids.pop(task_id)\n-                        # Koji task is not finished yet\n-                        else:\n-                            bug = None\n-                            rh_stuff = None\n-                    else:\n-                        # if it was CANCELED or FAILED, then we do not care.\n-                        # We remove koji builds from both triggers\n-                        # Check if we have proper BZ and then remove it.\n-                        self.old_triggered_task_ids.pop(task_id)\n-                        self.new_triggered_task_ids.pop(new_task_id)\n-                        bug = None\n-                        rh_stuff = None\n+            old_task_id, old_task = task_id, self.old_triggered_task_ids[task_id]\n+            for tid, task in six.iteritems(self.new_triggered_task_ids):\n+                if task[0].bug_id == old_task[0].bug_id:\n+                    new_task_id, new_task = tid, task\n                     break\n-        # if task_id is in new trigger let's check\n         elif task_id in self.new_triggered_task_ids:\n             self.new_triggered_task_ids[task_id][1] = state\n-            # Remember BZ from new trigger\n-            bz, new_state, new_version, package = self.new_triggered_task_ids[task_id]\n-            # We do not have nothing to do if koji was canceled\n-            # remove task_ids from old and new triggers\n-            for old_task_id, (old_bz, old_state, old_version, old_package) in \\\n-                    six.iteritems(self.old_triggered_task_ids):\n-                if int(old_bz.bug_id) == int(bz.bug_id):\n-                    if new_state == 'CANCELED':\n-                        self.new_triggered_task_ids.pop(task_id)\n-                        self.old_triggered_task_ids.pop(old_task_id)\n-                        bug = None\n-                        rh_stuff = None\n-                    # Koji build was successful and we can compare both packages\n-                    elif new_state == 'CLOSED':\n-                        if old_state is not None:\n-                            # We do not want to call rebase-helper if old koji was cancelled\n-                            # remove both task from triggers\n-                            if old_state == 'CLOSED':\n-                                rh_stuff = self.buildsys.rebase_helper_checkers(new_version,\n-                                                                                str(old_task_id),\n-                                                                                str(task_id),\n-                                                                                tmp)\n-                                bug = bz\n-                                text = text % (new_state, task_id)\n-                                self.bugzilla.follow_up(text, bug)\n-                            # Old sources failed or cancelled. We do not have nothing to do\n-                            elif old_state in ('FAILED', 'CANCELED'):\n-                                bug = None\n-                                rh_stuff = None\n-                            self.old_triggered_task_ids.pop(old_task_id)\n-                            self.new_triggered_task_ids.pop(task_id)\n-                        # Old sources has not been finished yet\n-                        else:\n-                            bug = None\n-                            rh_stuff = None\n-                    # Koji build failed and we have to attach build logs from rebase-helper\n-                    else:\n-                        if old_state is not None and old_state not in ('FAILED', 'CANCELED'):\n-                            rh_stuff = self.buildsys.rebase_helper_checkers(new_version,\n-                                                                            str(old_task_id),\n-                                                                            str(task_id),\n-                                                                            tmp)\n-                            bug = bz\n-                            self.old_triggered_task_ids.pop(old_task_id)\n-                            self.new_triggered_task_ids.pop(task_id)\n-                            text = text % (new_state, task_id)\n-                            self.bugzilla.follow_up(text, bug)\n+            new_task_id, new_task = task_id, self.new_triggered_task_ids[task_id]\n+            for tid, task in six.iteritems(self.old_triggered_task_ids):\n+                if task[0].bug_id == new_task[0].bug_id:\n+                    old_task_id, old_task = tid, task\n                     break\n \n-        if bug and rh_stuff:\n-            self._update_bz_rh(bug, rh_stuff)\n-        shutil.rmtree(tmp)\n-        os.chdir(cwd)\n+        if old_task_id is None or new_task_id is None:\n+            # not a task triggered by rebase\n+            return\n+\n+        if old_task[1] is None or new_task[1] is None:\n+            # at least one task is still open\n+            return\n+\n+        bz = old_task[0]\n+        upstream = new_task[2]\n+\n+        if old_task[1] == 'CLOSED':\n+            tmp = tempfile.mkdtemp(prefix='thn-rh-', dir='/var/tmp')\n+            try:\n+                rh_stuff = None\n+                try:\n+                    result_rh, rh_stuff = self.buildsys.check_rebase(\n+                        upstream, old_task_id, new_task_id, tmp)\n+                    if new_task[1] == 'CLOSED':\n+                        self.bugzilla.follow_up(\"Scratch builds compared successfully.\", bz)\n+                    elif new_task[1] == 'FAILED':\n+                        self.bugzilla.follow_up(\"Scratch build of rebased version failed.\", bz)\n+                    elif new_task[1] == 'CANCELED':\n+                        self.bugzilla.follow_up(\"Scratch build of rebased version \"\n+                                                \"has been canceled.\", bz)\n+                    self._rh_attach_logs(bz, rh_stuff)\n+                except Exception as e:\n+                    self.log.warning(\"rebase-helper failed with: %s\" % str(e))\n+                    self.log.warning(traceback.format_exc())\n+                    self._rh_fail(e, bz, rh_stuff)\n+\n+            finally:\n+                self.log.debug(\"Removing %r\" % tmp)\n+                shutil.rmtree(tmp)\n+\n+        elif old_task[1] == 'FAILED':\n+            self.bugzilla.follow_up(\"Scratch build of rawhide version failed.\", bz)\n+        elif old_task[1] == 'CANCELED':\n+            self.bugzilla.follow_up(\"Scratch build of rawhide version has been canceled.\", bz)\n+\n+        self.old_triggered_task_ids.pop(old_task_id)\n+        self.new_triggered_task_ids.pop(new_task_id)\n+\n+    def _rh_attach_logs(self, bz, rh_stuff, debug=False):\n+        for checker, log in six.iteritems(rh_stuff.get('checkers', {})):\n+            if not log or os.path.getsize(log) == 0:\n+                continue\n+            note = \"Checker %s output\" % checker\n+            self.bugzilla.attach_log(log, note, bz)\n+\n+        try:\n+            for log in rh_stuff['build_logs']['build_ref']['new']['logs']:\n+                if not log or os.path.getsize(log) == 0:\n+                    continue\n+                if not log.endswith('root.log') and not log.endswith('build.log'):\n+                    continue\n+                note = \"Log %s from rebased version build\" % (os.path.basename(log))\n+                self.bugzilla.attach_log(log, note, bz)\n+        except KeyError:\n+            pass\n+\n+        for log in rh_stuff.get('logs', []):\n+            if not log or os.path.getsize(log) == 0:\n+                continue\n+            notes = [\"Log %s from rebase-helper\" % os.path.basename(log)]\n+            if debug and log.endswith('debug.log'):\n+                notes.append(\"Check it for details and report potential issues \"\n+                             \"to rebase-helper upstream:\")\n+                notes.append(\"https://github.com/rebase-helper/rebase-helper/issues\")\n+            self.bugzilla.attach_log(log, \"\\n\".join(notes), bz)\n+\n+    def _rh_fail(self, error, bz, rh_stuff):","path":"hotness/consumers.py","position":350,"original_position":350,"commit_id":"65314342ef47468bd846ca02f1863a451b19eff0","original_commit_id":"65314342ef47468bd846ca02f1863a451b19eff0","user":{"login":"jeremycline","id":1977525,"avatar_url":"https://avatars.githubusercontent.com/u/1977525?v=3","gravatar_id":"","url":"https://api.github.com/users/jeremycline","html_url":"https://github.com/jeremycline","followers_url":"https://api.github.com/users/jeremycline/followers","following_url":"https://api.github.com/users/jeremycline/following{/other_user}","gists_url":"https://api.github.com/users/jeremycline/gists{/gist_id}","starred_url":"https://api.github.com/users/jeremycline/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jeremycline/subscriptions","organizations_url":"https://api.github.com/users/jeremycline/orgs","repos_url":"https://api.github.com/users/jeremycline/repos","events_url":"https://api.github.com/users/jeremycline/events{/privacy}","received_events_url":"https://api.github.com/users/jeremycline/received_events","type":"User","site_admin":false},"body":"docblock here as well","created_at":"2016-12-02T14:52:57Z","updated_at":"2016-12-02T14:54:32Z","html_url":"https://github.com/fedora-infra/the-new-hotness/pull/138#discussion_r90654489","pull_request_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/138","_links":{"self":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/comments/90654489"},"html":{"href":"https://github.com/fedora-infra/the-new-hotness/pull/138#discussion_r90654489"},"pull_request":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/138"}}},"pull_request":{"url":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/138","id":95727258,"html_url":"https://github.com/fedora-infra/the-new-hotness/pull/138","diff_url":"https://github.com/fedora-infra/the-new-hotness/pull/138.diff","patch_url":"https://github.com/fedora-infra/the-new-hotness/pull/138.patch","issue_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/issues/138","number":138,"state":"open","locked":false,"title":"rebase-helper related code refactor","user":{"login":"nforro","id":14923067,"avatar_url":"https://avatars.githubusercontent.com/u/14923067?v=3","gravatar_id":"","url":"https://api.github.com/users/nforro","html_url":"https://github.com/nforro","followers_url":"https://api.github.com/users/nforro/followers","following_url":"https://api.github.com/users/nforro/following{/other_user}","gists_url":"https://api.github.com/users/nforro/gists{/gist_id}","starred_url":"https://api.github.com/users/nforro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nforro/subscriptions","organizations_url":"https://api.github.com/users/nforro/orgs","repos_url":"https://api.github.com/users/nforro/repos","events_url":"https://api.github.com/users/nforro/events{/privacy}","received_events_url":"https://api.github.com/users/nforro/received_events","type":"User","site_admin":false},"body":"Refactor, rewrite and clean up rebase-helper related code.","created_at":"2016-11-29T16:32:28Z","updated_at":"2016-12-02T14:54:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"94e5bc7e7c1421b13f4a32e307b12df3cac4825e","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/138/commits","review_comments_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/138/comments","review_comment_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/issues/138/comments","statuses_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/statuses/65314342ef47468bd846ca02f1863a451b19eff0","head":{"label":"nforro:rebase-helper-refactor","ref":"rebase-helper-refactor","sha":"65314342ef47468bd846ca02f1863a451b19eff0","user":{"login":"nforro","id":14923067,"avatar_url":"https://avatars.githubusercontent.com/u/14923067?v=3","gravatar_id":"","url":"https://api.github.com/users/nforro","html_url":"https://github.com/nforro","followers_url":"https://api.github.com/users/nforro/followers","following_url":"https://api.github.com/users/nforro/following{/other_user}","gists_url":"https://api.github.com/users/nforro/gists{/gist_id}","starred_url":"https://api.github.com/users/nforro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nforro/subscriptions","organizations_url":"https://api.github.com/users/nforro/orgs","repos_url":"https://api.github.com/users/nforro/repos","events_url":"https://api.github.com/users/nforro/events{/privacy}","received_events_url":"https://api.github.com/users/nforro/received_events","type":"User","site_admin":false},"repo":{"id":69229579,"name":"the-new-hotness","full_name":"nforro/the-new-hotness","owner":{"login":"nforro","id":14923067,"avatar_url":"https://avatars.githubusercontent.com/u/14923067?v=3","gravatar_id":"","url":"https://api.github.com/users/nforro","html_url":"https://github.com/nforro","followers_url":"https://api.github.com/users/nforro/followers","following_url":"https://api.github.com/users/nforro/following{/other_user}","gists_url":"https://api.github.com/users/nforro/gists{/gist_id}","starred_url":"https://api.github.com/users/nforro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nforro/subscriptions","organizations_url":"https://api.github.com/users/nforro/orgs","repos_url":"https://api.github.com/users/nforro/repos","events_url":"https://api.github.com/users/nforro/events{/privacy}","received_events_url":"https://api.github.com/users/nforro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/nforro/the-new-hotness","description":"A fedmsg consumer that files bugzilla bugs for upstream releases","fork":true,"url":"https://api.github.com/repos/nforro/the-new-hotness","forks_url":"https://api.github.com/repos/nforro/the-new-hotness/forks","keys_url":"https://api.github.com/repos/nforro/the-new-hotness/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nforro/the-new-hotness/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nforro/the-new-hotness/teams","hooks_url":"https://api.github.com/repos/nforro/the-new-hotness/hooks","issue_events_url":"https://api.github.com/repos/nforro/the-new-hotness/issues/events{/number}","events_url":"https://api.github.com/repos/nforro/the-new-hotness/events","assignees_url":"https://api.github.com/repos/nforro/the-new-hotness/assignees{/user}","branches_url":"https://api.github.com/repos/nforro/the-new-hotness/branches{/branch}","tags_url":"https://api.github.com/repos/nforro/the-new-hotness/tags","blobs_url":"https://api.github.com/repos/nforro/the-new-hotness/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nforro/the-new-hotness/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nforro/the-new-hotness/git/refs{/sha}","trees_url":"https://api.github.com/repos/nforro/the-new-hotness/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nforro/the-new-hotness/statuses/{sha}","languages_url":"https://api.github.com/repos/nforro/the-new-hotness/languages","stargazers_url":"https://api.github.com/repos/nforro/the-new-hotness/stargazers","contributors_url":"https://api.github.com/repos/nforro/the-new-hotness/contributors","subscribers_url":"https://api.github.com/repos/nforro/the-new-hotness/subscribers","subscription_url":"https://api.github.com/repos/nforro/the-new-hotness/subscription","commits_url":"https://api.github.com/repos/nforro/the-new-hotness/commits{/sha}","git_commits_url":"https://api.github.com/repos/nforro/the-new-hotness/git/commits{/sha}","comments_url":"https://api.github.com/repos/nforro/the-new-hotness/comments{/number}","issue_comment_url":"https://api.github.com/repos/nforro/the-new-hotness/issues/comments{/number}","contents_url":"https://api.github.com/repos/nforro/the-new-hotness/contents/{+path}","compare_url":"https://api.github.com/repos/nforro/the-new-hotness/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nforro/the-new-hotness/merges","archive_url":"https://api.github.com/repos/nforro/the-new-hotness/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nforro/the-new-hotness/downloads","issues_url":"https://api.github.com/repos/nforro/the-new-hotness/issues{/number}","pulls_url":"https://api.github.com/repos/nforro/the-new-hotness/pulls{/number}","milestones_url":"https://api.github.com/repos/nforro/the-new-hotness/milestones{/number}","notifications_url":"https://api.github.com/repos/nforro/the-new-hotness/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nforro/the-new-hotness/labels{/name}","releases_url":"https://api.github.com/repos/nforro/the-new-hotness/releases{/id}","deployments_url":"https://api.github.com/repos/nforro/the-new-hotness/deployments","created_at":"2016-09-26T08:32:06Z","updated_at":"2016-09-26T08:32:08Z","pushed_at":"2016-12-01T08:15:51Z","git_url":"git://github.com/nforro/the-new-hotness.git","ssh_url":"git@github.com:nforro/the-new-hotness.git","clone_url":"https://github.com/nforro/the-new-hotness.git","svn_url":"https://github.com/nforro/the-new-hotness","homepage":"https://release-monitoring.org","size":289,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"fedora-infra:develop","ref":"develop","sha":"d1042c2eaa128de27ddf3ad29b0e16285ec4a93c","user":{"login":"fedora-infra","id":3316637,"avatar_url":"https://avatars.githubusercontent.com/u/3316637?v=3","gravatar_id":"","url":"https://api.github.com/users/fedora-infra","html_url":"https://github.com/fedora-infra","followers_url":"https://api.github.com/users/fedora-infra/followers","following_url":"https://api.github.com/users/fedora-infra/following{/other_user}","gists_url":"https://api.github.com/users/fedora-infra/gists{/gist_id}","starred_url":"https://api.github.com/users/fedora-infra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fedora-infra/subscriptions","organizations_url":"https://api.github.com/users/fedora-infra/orgs","repos_url":"https://api.github.com/users/fedora-infra/repos","events_url":"https://api.github.com/users/fedora-infra/events{/privacy}","received_events_url":"https://api.github.com/users/fedora-infra/received_events","type":"Organization","site_admin":false},"repo":{"id":24946152,"name":"the-new-hotness","full_name":"fedora-infra/the-new-hotness","owner":{"login":"fedora-infra","id":3316637,"avatar_url":"https://avatars.githubusercontent.com/u/3316637?v=3","gravatar_id":"","url":"https://api.github.com/users/fedora-infra","html_url":"https://github.com/fedora-infra","followers_url":"https://api.github.com/users/fedora-infra/followers","following_url":"https://api.github.com/users/fedora-infra/following{/other_user}","gists_url":"https://api.github.com/users/fedora-infra/gists{/gist_id}","starred_url":"https://api.github.com/users/fedora-infra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fedora-infra/subscriptions","organizations_url":"https://api.github.com/users/fedora-infra/orgs","repos_url":"https://api.github.com/users/fedora-infra/repos","events_url":"https://api.github.com/users/fedora-infra/events{/privacy}","received_events_url":"https://api.github.com/users/fedora-infra/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fedora-infra/the-new-hotness","description":"A fedmsg consumer that files bugzilla bugs for upstream releases","fork":false,"url":"https://api.github.com/repos/fedora-infra/the-new-hotness","forks_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/forks","keys_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/teams","hooks_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/hooks","issue_events_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/issues/events{/number}","events_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/events","assignees_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/assignees{/user}","branches_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/branches{/branch}","tags_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/tags","blobs_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/git/refs{/sha}","trees_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/statuses/{sha}","languages_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/languages","stargazers_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/stargazers","contributors_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/contributors","subscribers_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/subscribers","subscription_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/subscription","commits_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/commits{/sha}","git_commits_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/git/commits{/sha}","comments_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/comments{/number}","issue_comment_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/issues/comments{/number}","contents_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/contents/{+path}","compare_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/merges","archive_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/downloads","issues_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/issues{/number}","pulls_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls{/number}","milestones_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/milestones{/number}","notifications_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/labels{/name}","releases_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/releases{/id}","deployments_url":"https://api.github.com/repos/fedora-infra/the-new-hotness/deployments","created_at":"2014-10-08T15:07:03Z","updated_at":"2016-11-28T14:44:22Z","pushed_at":"2016-12-01T08:15:51Z","git_url":"git://github.com/fedora-infra/the-new-hotness.git","ssh_url":"git@github.com:fedora-infra/the-new-hotness.git","clone_url":"https://github.com/fedora-infra/the-new-hotness.git","svn_url":"https://github.com/fedora-infra/the-new-hotness","homepage":"https://release-monitoring.org","size":301,"stargazers_count":13,"watchers_count":13,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"open_issues_count":13,"forks":11,"open_issues":13,"watchers":13,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/138"},"html":{"href":"https://github.com/fedora-infra/the-new-hotness/pull/138"},"issue":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/issues/138"},"comments":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/issues/138/comments"},"review_comments":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/138/comments"},"review_comment":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/pulls/138/commits"},"statuses":{"href":"https://api.github.com/repos/fedora-infra/the-new-hotness/statuses/65314342ef47468bd846ca02f1863a451b19eff0"}}}}
{"actor":{"display_login":"jeremycline"}}