From 710502c6d868ed0d6844e081bd0654eb51723733 Mon Sep 17 00:00:00 2001 From: Shay Date: Tue, 25 Apr 2023 11:52:54 -0700 Subject: [PATCH] Update the `check_schema_delta` script to account for when the schema version has been bumped locally (#15466) --- changelog.d/15466.bugfix | 1 + scripts-dev/check_schema_delta.py | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 changelog.d/15466.bugfix diff --git a/changelog.d/15466.bugfix b/changelog.d/15466.bugfix new file mode 100644 index 000000000..299a7f0f0 --- /dev/null +++ b/changelog.d/15466.bugfix @@ -0,0 +1 @@ +Update the check_schema_delta script to account for when the schema version has been bumped locally. diff --git a/scripts-dev/check_schema_delta.py b/scripts-dev/check_schema_delta.py index 32fe7f50d..fee4a8bd3 100755 --- a/scripts-dev/check_schema_delta.py +++ b/scripts-dev/check_schema_delta.py @@ -40,10 +40,32 @@ def main(force_colors: bool) -> None: exec(r, locals) current_schema_version = locals["SCHEMA_VERSION"] - click.secho(f"Current schema version: {current_schema_version}") - diffs: List[git.Diff] = repo.remote().refs.develop.commit.diff(None) + # Get the schema version of the local file to check against current schema on develop + with open("synapse/storage/schema/__init__.py", "r") as file: + local_schema = file.read() + new_locals: Dict[str, Any] = {} + exec(local_schema, new_locals) + local_schema_version = new_locals["SCHEMA_VERSION"] + + if local_schema_version != current_schema_version: + # local schema version must be +/-1 the current schema version on develop + if abs(local_schema_version - current_schema_version) != 1: + click.secho( + "The proposed schema version has diverged more than one version from develop, please fix!", + fg="red", + bold=True, + color=force_colors, + ) + click.get_current_context().exit(1) + + # right, we've changed the schema version within the allowable tolerance so + # let's now use the local version as the canonical version + current_schema_version = local_schema_version + + click.secho(f"Current schema version: {current_schema_version}") + seen_deltas = False bad_files = [] for diff in diffs: