Skip to content

Remove check_flit_worktree_compatibility once upstream flit fix ships #65772

Description

@potiuk

Background

PR #65771 adds check_flit_worktree_compatibility to dev/breeze/src/airflow_breeze/prepare_providers/provider_distributions.py. The check refuses to build provider sdists when the source tree is a git worktree, because two related things go wrong otherwise and no warning is emitted:

  1. flit worktree detection bug. flit.vcs.identify_vcs only checks .git.is_dir(), missing the .git-as-file pointer that git uses for worktrees and submodules. flit silently falls back to a non-VCS sdist that omits tracked files (docs/, tests/, provider.yaml, anything declared in [tool.flit.sdist] include), and the resulting packages fail reproducibility checks against the released sdists on dist.apache.org.
  2. Breeze Docker-mount case. Even once flit is fixed, when Breeze runs the build inside Docker only the worktree directory is bind-mounted — the absolute gitdir: path baked into the worktree's .git file references the main repo's .git/worktrees/<name> directory on the host, which is not reachable from the container. git ls-files then fails or misbehaves.

Upstream flit tracking:

What to do when this issue is actioned

Once both of the following hold:

…and the Docker-mount case has been addressed (either by mounting the main repo's .git/worktrees/<name> directory alongside the worktree, or by rewriting the gitdir: pointer when sources are staged into the container, or by deciding the Docker-mount path is not supported from worktrees), remove:

  • check_flit_worktree_compatibility in dev/breeze/src/airflow_breeze/prepare_providers/provider_distributions.py
  • Its call site in dev/breeze/src/airflow_breeze/commands/release_management_commands.py
  • Its tests in dev/breeze/tests/test_provider_distributions.py

If only the flit fix lands but the Docker-mount case is still broken, the check must stay (or be narrowed to the Docker case only) — the silent-incomplete-sdist failure is severe enough that we should not let a release train run into it unguarded.

Acceptance criteria

  • Provider sdists built from a git worktree add ... directory via breeze release-management prepare-provider-distributions --distribution-format sdist match byte-for-byte with sdists built from a plain git checkout of the same commit.
  • The same command run inside Breeze's Docker container from a worktree either succeeds with matching sdists or produces a clear, explicit error (not a silent incomplete tarball).
  • check_flit_worktree_compatibility removed and PR Breeze: fail fast when building provider sdists from a git worktree #65771's test coverage deleted along with it.

Related

Metadata

Metadata

Assignees

Labels

area:dev-envCI, pre-commit, pylint and other changes that do not change the behavior of the final code

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions