docs: def _process_change(self, payload, user, repo, repo_url, event,
                          codebase=None):
          """
          Consumes the JSON as a python object and actually starts the build.
  
          :arguments:
              payload
                  Python Object that represents the JSON sent by GitLab Service
                  Hook.
          """
          changes = []
          refname = payload['ref']
          # project name from http headers is empty for me, so get it from repository/name
          project = payload['repository']['name']
  
          # We only care about regular heads or tags
          match = re.match(r"^refs/(heads|tags)/(.+)$", refname)
          if not match:
              log.msg("Ignoring refname `%s': Not a branch" % refname)
              return changes
  
          branch = match.group(2)
          if payload.get('deleted'):
              log.msg("Branch `%s' deleted, ignoring" % branch)
              return changes
  
          for commit in payload['commits']:
              if not commit.get('distinct', True):
                  log.msg('Commit `%s` is a non-distinct commit, ignoring...' %
                          (commit['id'],))
                  continue
  
              files = []
              for kind in ('added', 'modified', 'removed'):
                  files.extend(commit.get(kind, []))
  
              when_timestamp = dateparse(commit['timestamp'])
  
              log.msg("New revision: %s" % commit['id'][:8])
  
              change = {
                  'author': '%s <%s>' % (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,
                  'category': event,
                  'properties': {
                      'event': event,
                  },
              }
  
              if codebase is not None:
                  change['codebase'] = codebase
  
              changes.append(change)
  
          return changes