code: public function getTags()
      {
          if ($this->fallbackDriver) {
              return $this->fallbackDriver->getTags();
          }
  
          if (null === $this->tags) {
              $this->tags = array();
              $resource = sprintf(
                  '%s?%s',
                  $this->tagsUrl,
                  http_build_query(
                      array(
                          'pagelen' => 100,
                          'fields' => 'values.name,values.target.hash,next',
                          'sort' => '-target.date',
                      ),
                      null,
                      '&'
                  )
              );
              $hasNext = true;
              while ($hasNext) {
                  $tagsData = JsonFile::parseJson($this->getContentsWithOAuthCredentials($resource), $resource);
                  foreach ($tagsData['values'] as $data) {
                      $this->tags[$data['name']] = $data['target']['hash'];
                  }
                  if (empty($tagsData['next'])) {
                      $hasNext = false;
                  } else {
                      $resource = $tagsData['next'];
                  }
              }
              if ($this->vcsType === 'hg') {
                  unset($this->tags['tip']);
              }
          }
  
          return $this->tags;
      }
docs: {@inheritDoc}