docs: def _process_change(self, payload, user, repo, repo_url, project, event,
                          properties):
          """
          Consumes the JSON as a python object and actually starts the build.
  
          :arguments:
              payload
                  Python Object that represents the JSON sent by GitHub Service
                  Hook.
          """
          changes = []
          refname = payload['ref']
  
          # We only care about regular heads or tags
          match = re.match(r"^refs/(heads|tags)/(.+)$", refname)
          if not match:
              log.msg("Ignoring refname `{}': Not a branch".format(refname))
              return changes
          category = None  # None is the legacy category for when hook only supported push
          if match.group(1) == "tags":
              category = "tag"
  
          branch = match.group(2)
          if payload.get('deleted'):
              log.msg("Branch `{}' deleted, ignoring".format(branch))
              return changes
  
          # check skip pattern in commit message. e.g.: [ci skip] and [skip ci]
          head_msg = payload['head_commit'].get('message', '')
          if self._has_skip(head_msg):
              return changes
          commits = payload['commits']
          if payload.get('created'):
              commits = [payload['head_commit']]
          for commit in commits:
              files = []
              for kind in ('added', 'modified', 'removed'):
                  files.extend(commit.get(kind, []))
  
              when_timestamp = dateparse(commit['timestamp'])
  
              log.msg("New revision: {}".format(commit['id'][:8]))
  
              change = {
                  'author': '{} <{}>'.format(commit['author']['name'],
                                             commit['author']['email']),
                  'files': files,
                  'comments': commit['message'],
                  'revision': commit['id'],
                  'when_timestamp': when_timestamp,
                  'branch': branch,
                  'revlink': commit['url'],
                  'repository': repo_url,
                  'project': project,
                  'properties': {
                      'github_distinct': commit.get('distinct', True),
                      'event': event,
                  },
                  'category': category
              }
              # Update with any white-listed github event properties
              change['properties'].update(properties)
  
              if callable(self._codebase):
                  change['codebase'] = self._codebase(payload)
              elif self._codebase is not None:
                  change['codebase'] = self._codebase
  
              changes.append(change)
  
          return changes