From abf9373865c319d2f1aaf188feef900bb8ebf933 Mon Sep 17 00:00:00 2001 From: Robert Westman Date: Thu, 3 Jun 2021 10:21:50 +0200 Subject: Fixes resolving of tag parameter for repo.tag I accessed private variables instead of adding getters, because other parts of the code do the same and I didn't know if there was a reason for it. E.g.: remote.py line 409: (...) RemoteReference._common_path_default (...) --- git/repo/base.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'git/repo/base.py') diff --git a/git/repo/base.py b/git/repo/base.py index e23ebb1a..540a5fe3 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -402,7 +402,18 @@ class Repo(object): def tag(self, path: PathLike) -> TagReference: """:return: TagReference Object, reference pointing to a Commit or Tag :param path: path to the tag reference, i.e. 0.1.5 or tags/0.1.5 """ - return TagReference(self, path) + full_path = self._to_full_tag_path(path) + return TagReference(self, full_path) + + @staticmethod + def _to_full_tag_path(path: PathLike): + if path.startswith(TagReference._common_path_default + '/'): + return path + if path.startswith(TagReference._common_default + '/'): + return Reference._common_path_default + '/' + path + else: + return TagReference._common_path_default + '/' + path + def create_head(self, path: PathLike, commit: str = 'HEAD', force: bool = False, logmsg: Optional[str] = None -- cgit v1.2.1 From 702bdf105205ca845a50b16d6703828d18e93003 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Thu, 3 Jun 2021 21:06:30 +0800 Subject: Fix flake8 --- git/repo/base.py | 1 - 1 file changed, 1 deletion(-) (limited to 'git/repo/base.py') diff --git a/git/repo/base.py b/git/repo/base.py index 540a5fe3..53698592 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -414,7 +414,6 @@ class Repo(object): else: return TagReference._common_path_default + '/' + path - def create_head(self, path: PathLike, commit: str = 'HEAD', force: bool = False, logmsg: Optional[str] = None ) -> 'SymbolicReference': -- cgit v1.2.1 From 7ca97dcef3131a11dd5ef41d674bb6bd36608608 Mon Sep 17 00:00:00 2001 From: Robert Westman Date: Thu, 3 Jun 2021 16:45:03 +0200 Subject: Removes PathLike type requirement for full_tag creation --- git/repo/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'git/repo/base.py') diff --git a/git/repo/base.py b/git/repo/base.py index 53698592..55682411 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -406,7 +406,7 @@ class Repo(object): return TagReference(self, full_path) @staticmethod - def _to_full_tag_path(path: PathLike): + def _to_full_tag_path(path): if path.startswith(TagReference._common_path_default + '/'): return path if path.startswith(TagReference._common_default + '/'): -- cgit v1.2.1 From 385a8c6c1a72dc34f69c5273c1b4c1285cc1d3c5 Mon Sep 17 00:00:00 2001 From: Robert Westman Date: Sat, 5 Jun 2021 12:15:38 +0200 Subject: Adds repo.is_valid_object check --- git/repo/base.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'git/repo/base.py') diff --git a/git/repo/base.py b/git/repo/base.py index 55682411..e7b1274b 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -3,12 +3,14 @@ # # This module is part of GitPython and is released under # the BSD License: http://www.opensource.org/licenses/bsd-license.php - +import binascii import logging import os import re import warnings +from gitdb.exc import BadObject + from git.cmd import ( Git, handle_process_output @@ -618,6 +620,23 @@ class Repo(object): raise return True + def is_valid_object(self, sha: str, object_type: Union['blob', 'commit', 'tree', 'tag'] = None) -> bool: + try: + complete_sha = self.odb.partial_to_complete_sha_hex(sha) + object_info = self.odb.info(complete_sha) + if object_type: + if object_info.type == object_type.encode(): + return True + else: + log.debug(f"Commit hash points to an object of type '{object_info.type.decode()}'. " + f"Requested were objects of type '{object_type}'") + return False + else: + return True + except BadObject as e: + log.debug("Commit hash is invalid.") + return False + def _get_daemon_export(self) -> bool: if self.git_dir: filename = osp.join(self.git_dir, self.DAEMON_EXPORT_FILE) -- cgit v1.2.1 From ac4fe6efbccc2ad5c2044bf36e34019363018630 Mon Sep 17 00:00:00 2001 From: Robert Westman Date: Sat, 5 Jun 2021 12:22:24 +0200 Subject: Fixes type check for is_valid_object --- git/repo/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'git/repo/base.py') diff --git a/git/repo/base.py b/git/repo/base.py index e7b1274b..b19503ee 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -620,7 +620,7 @@ class Repo(object): raise return True - def is_valid_object(self, sha: str, object_type: Union['blob', 'commit', 'tree', 'tag'] = None) -> bool: + def is_valid_object(self, sha: str, object_type: str = None) -> bool: try: complete_sha = self.odb.partial_to_complete_sha_hex(sha) object_info = self.odb.info(complete_sha) -- cgit v1.2.1 From 4832aa6bf82e4853f8f426fc06350540e2c8a9e7 Mon Sep 17 00:00:00 2001 From: Robert Westman Date: Sat, 5 Jun 2021 12:34:24 +0200 Subject: Removes local variable 'e' that is assigned to but never used --- git/repo/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'git/repo/base.py') diff --git a/git/repo/base.py b/git/repo/base.py index b19503ee..d38cf756 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -633,7 +633,7 @@ class Repo(object): return False else: return True - except BadObject as e: + except BadObject: log.debug("Commit hash is invalid.") return False -- cgit v1.2.1 From fb2461d84f97a72641ef1e878450aeab7cd17241 Mon Sep 17 00:00:00 2001 From: Robert Westman Date: Sat, 5 Jun 2021 12:35:41 +0200 Subject: Removes unused import --- git/repo/base.py | 1 - 1 file changed, 1 deletion(-) (limited to 'git/repo/base.py') diff --git a/git/repo/base.py b/git/repo/base.py index d38cf756..0db0bd0c 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -3,7 +3,6 @@ # # This module is part of GitPython and is released under # the BSD License: http://www.opensource.org/licenses/bsd-license.php -import binascii import logging import os import re -- cgit v1.2.1 From 464504ce0069758fdb88b348e4a626a265fb3fe3 Mon Sep 17 00:00:00 2001 From: Robert Westman Date: Sat, 5 Jun 2021 12:39:44 +0200 Subject: Removes f-string syntax for p35 compatibility --- git/repo/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'git/repo/base.py') diff --git a/git/repo/base.py b/git/repo/base.py index 0db0bd0c..6cc56031 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -627,8 +627,8 @@ class Repo(object): if object_info.type == object_type.encode(): return True else: - log.debug(f"Commit hash points to an object of type '{object_info.type.decode()}'. " - f"Requested were objects of type '{object_type}'") + log.debug("Commit hash points to an object of type '%s'. Requested were objects of type '%s'", + object_info.type.decode(), object_type) return False else: return True -- cgit v1.2.1