Exemple #1
0
  def AsDict(self):
    d = {
        'server': self.server,
        'change': self.change,
        'revision': self.revision,
    }

    try:
      d.update(commit_cache.Get(self.id_string))
      d['created'] = d['created'].isoformat()
    except KeyError:
      patch_info = gerrit_service.GetChange(
          self.server, self.change,
          fields=('ALL_REVISIONS', 'DETAILED_ACCOUNTS', 'COMMIT_FOOTERS'))
      revision_info = patch_info['revisions'][self.revision]
      url = '%s/c/%s/+/%d/%d' % (
          self.server, patch_info['project'],
          patch_info['_number'], revision_info['_number'])
      author = revision_info['uploader']['email']
      created = datetime.datetime.strptime(
          revision_info['created'], '%Y-%m-%d %H:%M:%S.%f000')
      subject = patch_info['subject']
      current_revision = patch_info['current_revision']
      message = patch_info['revisions'][current_revision]['commit_with_footers']

      d.update({
          'url': url,
          'author': author,
          'created': created.isoformat(),
          'subject': subject,
          'message': message,
      })
      commit_cache.Put(self.id_string, url, author, created, subject, message)

    return d
Exemple #2
0
    def AsDict(self):
        d = {
            'repository': self.repository,
            'git_hash': self.git_hash,
        }

        try:
            d.update(commit_cache.Get(self.id_string))
            d['created'] = d['created'].isoformat()
        except KeyError:
            commit_info = gitiles_service.CommitInfo(self.repository_url,
                                                     self.git_hash)
            url = self.repository_url + '/+/' + commit_info['commit']
            author = commit_info['author']['email']

            created = ParseDateWithUTCOffset(commit_info['committer']['time'])

            subject = commit_info['message'].split('\n', 1)[0]
            message = commit_info['message']

            d.update({
                'url': url,
                'author': author,
                'created': created.isoformat(),
                'subject': subject,
                'message': message,
            })
            commit_cache.Put(self.id_string, url, author, created, subject,
                             message)

        commit_position = _ParseCommitPosition(d['message'])
        if commit_position:
            d['commit_position'] = commit_position

        return d
Exemple #3
0
  def CacheCommitInfo(self, commit_info, memcache_timeout=None):
    url = self.repository_url + '/+/' + commit_info['commit']
    author = commit_info['author']['email']

    created = ParseDateWithUTCOffset(commit_info['committer']['time'])

    subject = commit_info['message'].split('\n', 1)[0]
    message = commit_info['message']

    commit_cache.Put(
        self.id_string,
        url,
        author,
        created,
        subject,
        message,
        memcache_timeout=memcache_timeout)

    return {
        'url': url,
        'author': author,
        'created': created,
        'subject': subject,
        'message': message,
    }
Exemple #4
0
    def testPutAndGet(self):
        created = datetime.datetime.now()
        commit_cache.Put('id string', 'https://example.url',
                         '*****@*****.**', created, 'Subject.',
                         'Subject.\n\nMessage.')

        expected = {
            'url': 'https://example.url',
            'author': '*****@*****.**',
            'created': created,
            'subject': 'Subject.',
            'message': 'Subject.\n\nMessage.',
        }
        self.assertEqual(commit_cache.Get('id string'), expected)
Exemple #5
0
  def CacheCommitInfo(self):
    try:
      return commit_cache.Get(self.id_string)
    except KeyError:
      commit_info = gitiles_service.CommitInfo(
          self.repository_url, self.git_hash)
      url = self.repository_url + '/+/' + commit_info['commit']
      author = commit_info['author']['email']

      created = ParseDateWithUTCOffset(commit_info['committer']['time'])

      subject = commit_info['message'].split('\n', 1)[0]
      message = commit_info['message']

      commit_cache.Put(self.id_string, url, author, created, subject, message)

      return {
          'url': url,
          'author': author,
          'created': created,
          'subject': subject,
          'message': message,
      }