From 6ea0caea86f4c6b1f934b682a3aa7722e98a46f9 Mon Sep 17 00:00:00 2001 From: Jack Neus Date: Tue, 20 Jul 2021 20:52:33 +0000 Subject: repo: properly handle remote annotations in manifest_xml BUG=b:192664812 TEST=tests/ Change-Id: I1aa50260f4a00d3cebbd531141e1626825e70127 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/312643 Tested-by: Jack Neus Reviewed-by: Mike Frysinger --- project.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'project.py') diff --git a/project.py b/project.py index a55e7600..fe88a505 100644 --- a/project.py +++ b/project.py @@ -251,13 +251,29 @@ class DiffColoring(Coloring): self.fail = self.printer('fail', fg='red') -class _Annotation(object): +class Annotation(object): def __init__(self, name, value, keep): self.name = name self.value = value self.keep = keep + def __eq__(self, other): + if not isinstance(other, Annotation): + return False + return self.__dict__ == other.__dict__ + + def __lt__(self, other): + # This exists just so that lists of Annotation objects can be sorted, for + # use in comparisons. + if not isinstance(other, Annotation): + raise ValueError('comparison is not between two Annotation objects') + if self.name == other.name: + if self.value == other.value: + return self.keep < other.keep + return self.value < other.value + return self.name < other.name + def _SafeExpandPath(base, subpath, skipfinal=False): """Make sure |subpath| is completely safe under |base|. @@ -1448,7 +1464,7 @@ class Project(object): self.linkfiles.append(_LinkFile(self.worktree, src, topdir, dest)) def AddAnnotation(self, name, value, keep): - self.annotations.append(_Annotation(name, value, keep)) + self.annotations.append(Annotation(name, value, keep)) def DownloadPatchSet(self, change_id, patch_id): """Download a single patch set of a single change to FETCH_HEAD. -- cgit v1.2.3-54-g00ecf