diff --git a/gitlab/__init__.py b/gitlab/__init__.py index bdeb5c4a2..644a7842c 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -73,6 +73,7 @@ def __init__(self, url, private_token=None, email=None, password=None, timeout=None, api_version='3', session=None): self._api_version = str(api_version) + self._server_version = self._server_revision = None self._url = '%s/api/v%s' % (url, api_version) #: Timeout to use for requests to gitlab server self.timeout = timeout @@ -227,15 +228,17 @@ def version(self): ('unknown', 'unknwown') if the server doesn't support this API call (gitlab < 8.13.0) """ - r = self._raw_get('/version') - try: - raise_error_from_response(r, GitlabGetError, 200) - data = r.json() - self.version, self.revision = data['version'], data['revision'] - except GitlabGetError: - self.version = self.revision = 'unknown' - - return self.version, self.revision + if self._server_version is None: + r = self._raw_get('/version') + try: + raise_error_from_response(r, GitlabGetError, 200) + data = r.json() + self._server_version = data['version'] + self._server_revision = data['revision'] + except GitlabGetError: + self._server_version = self._server_revision = 'unknown' + + return self._server_version, self._server_revision def set_url(self, url): """Updates the GitLab URL.