diff --git a/gitlab/objects.py b/gitlab/objects.py index a7f35bdbb..3a44f6ebd 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -1475,7 +1475,7 @@ def blob(self, sha, filepath, **kwargs): return r.content def raw_blob(self, sha, **kwargs): - """Return the raw file contents for a blob by blob SHA. + """Returns the raw file contents for a blob by blob SHA. Args: sha(str): ID of the blob @@ -1492,6 +1492,26 @@ def raw_blob(self, sha, **kwargs): raise_error_from_response(r, GitlabGetError) return r.content + def compare(self, from_, to, **kwargs): + """Returns a diff between two branches/commits. + + Args: + from_(str): orig branch/SHA + to(str): dest branch/SHA + + Returns: + str: The diff + + Raises: + GitlabConnectionError: If the server cannot be reached. + GitlabGetError: If the server fails to perform the request. + """ + url = "/projects/%s/repository/compare" % self.id + url = "%s?from=%s&to=%s" % (url, from_, to) + r = self.gitlab._raw_get(url, **kwargs) + raise_error_from_response(r, GitlabGetError) + return r.json() + def archive(self, sha=None, **kwargs): """Return a tarball of the repository.