# HG changeset patch # User Dan Villiom Podlaski Christiansen <danchr@gmail.com> # Date 1625568306 -7200 # Tue Jul 06 12:45:06 2021 +0200 # Node ID 26162b30cee5a874a1c6ead339dd2f967e8930d7 # Parent a1ddab5f8a8cbed413495b598159698ee92901d0 core: consolidate handling of annotated tags in to map_hg_get diff --git a/hggit/git_handler.py b/hggit/git_handler.py --- a/hggit/git_handler.py +++ b/hggit/git_handler.py @@ -231,7 +231,16 @@ self._map_git[gitsha] = hgsha self._map_hg[hgsha] = gitsha - def map_hg_get(self, gitsha): + def map_hg_get(self, gitsha, deref=False): + if deref: + try: + gitobj = self.git.get_object(gitsha) + except KeyError: + gitobj = None + + if isinstance(gitobj, Tag): + gitsha = gitobj.object[1] + return self._map_git.get(gitsha) def map_git_get(self, hgsha): @@ -408,17 +417,9 @@ old = {} for ref, sha in old_refs.items(): - try: - gittag = self.git.get_object(sha) - except KeyError: - gittag = None - # make sure we don't accidentally dereference and lose # annotated tags - if isinstance(gittag, Tag): - sha = gittag.object[1] - - old_target = self.map_hg_get(sha) + old_target = self.map_hg_get(sha, deref=True) if old_target: self.ui.debug(b'unchanged ref %s: %s\n' % (ref, old_target)) @@ -1572,20 +1573,10 @@ if ref_name[-3:] == b'^{}': ref_name = ref_name[:-3] if ref_name not in repotags: - obj = self.git.get_object(refs[k]) - sha = None - if isinstance(obj, Commit): # lightweight - sha = self.map_hg_get(refs[k]) - if sha is not None: - self.tags[ref_name] = sha - elif isinstance(obj, Tag): # annotated - (obj_type, obj_sha) = obj.object - obj = self.git.get_object(obj_sha) - if isinstance(obj, Commit): - sha = self.map_hg_get(obj_sha) - # TODO: better handling for annotated tags - if sha is not None: - self.tags[ref_name] = sha + sha = self.map_hg_get(refs[k], deref=True) + if sha is not None: + self.tags[ref_name] = sha + self.save_tags() def add_tag(self, target, *tags):