From 578b57c9753a40d09c899ec41e0f7a839d6d208e Mon Sep 17 00:00:00 2001 From: Fredrik de Groot Date: Mon, 15 Dec 2025 09:08:00 +0100 Subject: [PATCH] manifest_xml: Improve error message on base check fail Previous error had a scent of alien blob to it due to dumping the list in a single long line, so improve print for human readability. Example of new fail: error: in `manifest`: detected base-revision mismatch, updates needed: remove-project name build/make: base fccb6b3e884b4b964e795f5f8865f6bbb4722b5a vs revision 6e9a0c16f20d1cfcf08b8b9cb42301b6c9712862 remove-project path build/soong: base 16b3c9ca0679bb376966866afb849322c8aec79f vs revision b7490575c16b87d861a532b03bd1b2d076b6fa0b extend-project name platform/system/sepolicy: base c2652856e9f0e0433d78cfb481efe392d6f5dbc4 vs revision cf9a73f92f503ffc4bd3e726164babfb40a9fcaf Test: repo manifest > /dev/null && echo 'Nice =)' on various good and bad test manifests Change-Id: I8d741e11c69ef9e4f8cf09e32aa0868b6daa5acd Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/619921 Tested-by: Fredrik de Groot Reviewed-by: Mike Frysinger Reviewed-by: Gavin Mak Commit-Queue: Fredrik de Groot --- manifest_xml.py | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/manifest_xml.py b/manifest_xml.py index 379ce09be..0e80435a5 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -1519,9 +1519,9 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md if base_revision: if p.revisionExpr != base_revision: failed_revision_changes.append( - "extend-project name %s mismatch base " - "%s vs revision %s" - % (name, base_revision, p.revisionExpr) + f"extend-project name {name}:\n " + f"base {base_revision} vs " + f"revision {p.revisionExpr}" ) p.SetRevision(revision) @@ -1622,9 +1622,9 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md if base_revision: if p.revisionExpr != base_revision: failed_revision_changes.append( - "remove-project name %s mismatch base " - "%s vs revision %s" - % (name, base_revision, p.revisionExpr) + f"remove-project name {name}:\n " + f"base {base_revision} vs " + f"revision {p.revisionExpr}" ) del self._paths[p.relpath] if not removed_project: @@ -1636,13 +1636,9 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md if base_revision: if p.revisionExpr != base_revision: failed_revision_changes.append( - "remove-project path %s mismatch base " - "%s vs revision %s" - % ( - p.relpath, - base_revision, - p.revisionExpr, - ) + f"remove-project path {p.relpath}:\n " + f"base {base_revision} vs " + f"revision {p.revisionExpr}" ) self._projects[projname].remove(p) del self._paths[p.relpath] @@ -1664,10 +1660,10 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md ) if failed_revision_changes: + fail_string = "\n".join(failed_revision_changes) raise ManifestParseError( - "revision base check failed, rebase patches and update " - "base revs for: ", - failed_revision_changes, + f"detected base-revision mismatch, updates needed:\n" + f"{fail_string}", ) # Store repo hooks project information.