You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2026/04/25 19:22:16 UTC
(airflow) branch main updated: Standardize git remote naming on upstream/origin across docs and tooling (#65629)
This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 5433a292f81 Standardize git remote naming on upstream/origin across docs and tooling (#65629)
5433a292f81 is described below
commit 5433a292f81a9030b669a01c1801711f03e2083e
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Sat Apr 25 21:22:08 2026 +0200
Standardize git remote naming on upstream/origin across docs and tooling (#65629)
* Standardize git remote naming on upstream/origin across docs and tooling
Airflow's contributing docs, release runbooks, and agent instructions used
a mix of `apache`, `origin`, and placeholder names for the git remote that
tracks `apache/airflow`. Standardize on `upstream` → `apache/airflow` and
`origin` → the contributor's fork throughout — the two names already
assumed by `dev/sync_fork.sh` and by most beginner-facing docs — so that
contributors, release managers, and agents follow a single convention.
- Add a new "Git remote naming conventions" section to
`contributing-docs/10_working_with_git.rst` with migration commands for
the common legacy layouts (`apache` remote, origin-as-upstream, missing
upstream/fork).
- Update `contributing-docs/10_working_with_git.rst`,
`contributing-docs/18_contribution_workflow.rst`, and all
`dev/README_RELEASE_*.md` runbooks to use `upstream` in examples and
link to the conventions section.
- Update `AGENTS.md` (= `CLAUDE.md`) to document the convention and
instruct agents to surface remote-name mismatches to the user and
propose concrete `git remote rename` commands instead of silently
using whatever names they find.
- Switch breeze CLI defaults and error messages to match: `--remote-name`
now defaults to `upstream` in `release-management start-rc-process`,
`release-management update-constraints`, and
`sbom update-sbom-information`; `breeze ci find-backport-prs` warns
about a missing `upstream` (not `apache`) remote; the fallback list in
`tag_providers` now tries `upstream` first and keeps `apache`/`origin`
for back-compat.
- Regenerate the affected breeze help images and update the
`basic-tests.yml` CI workflow to add `upstream` rather than `apache`.
* Soften "don't push to main" wording in remote conventions section
@o-nikolas pointed out that the new "never push directly to main on
either remote" phrasing in the Git remote naming conventions section
was stricter than the long-standing guidance in
18_contribution_workflow.rst, which explicitly tolerates developing
directly on your fork's main and opening a PR from there.
Align the conventions section with the more permissive stance and
cross-link to the Contribution Workflow step so both places say the
same thing. AGENTS.md keeps the stricter "no pushes to main" rule
because that advice is aimed at automated agents where branch-only
workflows are the right default.
* Update contributing-docs/18_contribution_workflow.rst
Co-authored-by: Dev-iL <65...@users.noreply.github.com>
* Address review comments: RST indentation, wording, back-compat choice
- 10_working_with_git.rst: indent the wrapped paragraph and bullet list
under step 1 so Sphinx renders them inside the "1." item instead of
floating outside (flagged by Copilot — the existing step 2+ wraps
already follow this indent rule).
- MANUALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md: replace the
double "usually" with a single "Typically" (Dev-iL).
- sbom_commands.py: add ``apache`` back to NotVerifiedBetterChoice's
autocomplete/help list so legacy clones still see it in --help during
the upstream/origin transition. Any remote name is still accepted at
runtime since the type is "NotVerified" (Copilot). Regenerated the
sbom help-text SVGs.
---------
Co-authored-by: Dev-iL <65...@users.noreply.github.com>
---
.github/workflows/basic-tests.yml | 4 +-
AGENTS.md | 79 ++++++++++++++++---
contributing-docs/10_working_with_git.rst | 66 ++++++++++++----
contributing-docs/18_contribution_workflow.rst | 15 ++--
...UALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md | 12 +--
dev/README_RELEASE_AIRFLOW.md | 41 ++++++----
dev/README_RELEASE_AIRFLOWCTL.md | 38 +++++-----
dev/README_RELEASE_HELM_CHART.md | 15 ++--
dev/README_RELEASE_PROVIDERS.md | 23 ++++--
dev/README_RELEASE_PYTHON_CLIENT.md | 15 ++--
.../adr/0003-bootstrapping-virtual-environment.md | 2 +-
.../output_release-management_start-rc-process.svg | 36 ++++++---
.../output_release-management_start-rc-process.txt | 2 +-
...utput_release-management_update-constraints.svg | 46 +++++------
...utput_release-management_update-constraints.txt | 2 +-
.../images/output_sbom_update-sbom-information.svg | 88 ++++++++++++----------
.../images/output_sbom_update-sbom-information.txt | 2 +-
.../src/airflow_breeze/commands/ci_commands.py | 4 +-
.../commands/release_candidate_command.py | 11 ++-
.../commands/release_management_commands.py | 13 +++-
.../src/airflow_breeze/commands/sbom_commands.py | 13 +++-
dev/breeze/src/airflow_breeze/utils/github.py | 19 +++--
22 files changed, 368 insertions(+), 178 deletions(-)
diff --git a/.github/workflows/basic-tests.yml b/.github/workflows/basic-tests.yml
index c12468cab1e..730c750b083 100644
--- a/.github/workflows/basic-tests.yml
+++ b/.github/workflows/basic-tests.yml
@@ -352,8 +352,8 @@ jobs:
--answer yes --dry-run
- name: "Test providers metadata generation"
run: |
- git remote add apache https://github.com/apache/airflow.git
- git fetch apache --tags
+ git remote add upstream https://github.com/apache/airflow.git
+ git fetch upstream --tags
breeze release-management generate-providers-metadata --refresh-constraints-and-airflow-releases
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/AGENTS.md b/AGENTS.md
index c1a5007bffa..eff22115598 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -150,18 +150,75 @@ Add a newsfragment for user-visible changes:
- NEVER add Co-Authored-By with yourself as co-author of the commit. Agents cannot be authors, humans can be, Agents are assistants.
+### Git remote naming conventions
+
+Airflow standardises on two git remote names, and the rest of this file, the
+contributing docs, and the release docs all assume them:
+
+- **`upstream`** — the canonical `apache/airflow` repository (fetch from here).
+- **`origin`** — the contributor's fork of `apache/airflow` (push PR branches here).
+
+Always push branches to `origin`. Never push directly to `upstream` (and never
+push directly to `main` on either remote).
+
+**Before running any remote-based command, run `git remote -v` and verify the
+names match this convention.** If they do not — for example, the upstream remote
+is called `apache`, or `origin` points at `apache/airflow` with the fork under a
+different name like `fork` — **do not silently go along with the existing
+names**. Surface the mismatch to the user and propose the exact rename commands
+to bring the checkout in line with the convention, then ask the user to confirm
+before running them. Examples:
+
+- Upstream is named `apache`, fork is `origin` (common legacy layout):
+
+ ```bash
+ git remote rename apache upstream
+ ```
+
+- `origin` points at `apache/airflow` and the fork is named `fork` (release-manager
+ / "cloned upstream directly" layout):
+
+ ```bash
+ git remote rename origin upstream
+ git remote rename fork origin
+ ```
+
+- Upstream is missing entirely:
+
+ ```bash
+ git remote add upstream https://github.com/apache/airflow.git
+ # or, for SSH:
+ git remote add upstream git@github.com:apache/airflow.git
+ ```
+
+- Fork is missing entirely:
+
+ ```bash
+ gh repo fork apache/airflow --remote --remote-name origin
+ ```
+
+After any rename/add, re-run `git remote -v` to confirm the new state before
+continuing with commands that assume `upstream` / `origin`.
+
+If a doc, script, or command you're about to run uses the old `apache` name (or
+any other variant), **translate it to the `upstream` convention** in what you
+propose to the user, rather than perpetuating the old name. Flag the stale
+documentation so it can be fixed in a follow-up.
+
### Creating Pull Requests
-**Always push to the user's fork**, not to the upstream `apache/airflow` repo. Never push
-directly to `main`.
+**Always push to the user's fork (`origin`)**, not to `upstream` (`apache/airflow`).
+Never push directly to `main`.
+
+Before pushing, confirm the remote setup matches the conventions above
+(`upstream` → `apache/airflow`, `origin` → your fork). Run `git remote -v` and,
+if the names don't match, propose renames as described in "Git remote naming
+conventions" — ask the user to confirm before running them.
-Before pushing, determine the fork remote. Check `git remote -v` — if `origin` does **not**
-point to `apache/airflow`, use `origin` (it's the user's fork). If `origin` points to
-`apache/airflow`, look for another remote that points to the user's fork. If no fork remote
-exists, create one:
+If the fork remote does not exist at all, create one:
```bash
-gh repo fork apache/airflow --remote --remote-name fork
+gh repo fork apache/airflow --remote --remote-name origin
```
Before pushing, perform a self-review of your changes following the Gen-AI review guidelines
@@ -186,18 +243,18 @@ Before pushing, always rebase your branch onto the latest target branch (usually
to avoid merge conflicts and ensure CI runs against up-to-date code:
```bash
-git fetch <upstream-remote> <target_branch>
-git rebase <upstream-remote>/<target_branch>
+git fetch upstream <target_branch>
+git rebase upstream/<target_branch>
```
If there are conflicts, resolve them and continue the rebase. If the rebase is too complex,
ask the user for guidance.
-Then push the branch to the fork remote and open the PR creation page in the browser
+Then push the branch to your fork (`origin`) and open the PR creation page in the browser
with the body pre-filled (including the generative AI disclosure already checked):
```bash
-git push -u <fork-remote> <branch-name>
+git push -u origin <branch-name>
gh pr create --web --title "Short title (under 70 chars)" --body "$(cat <<'EOF'
Brief description of the changes.
diff --git a/contributing-docs/10_working_with_git.rst b/contributing-docs/10_working_with_git.rst
index 49b61359eae..e51cb1a1f21 100644
--- a/contributing-docs/10_working_with_git.rst
+++ b/contributing-docs/10_working_with_git.rst
@@ -26,6 +26,44 @@ that we are using rebase workflow. It also explains how to sync your fork with t
:depth: 2
:local:
+Git remote naming conventions
+=============================
+
+Airflow documentation, helper scripts (``dev/sync_fork.sh``), release tooling and
+agent instructions (``AGENTS.md``) all assume the following two remote names, and
+you should configure your local checkout to match:
+
+* ``upstream`` — the canonical ``apache/airflow`` repository (where you fetch from).
+* ``origin`` — your personal fork of ``apache/airflow`` (where you push branches
+ for PRs).
+
+Always push PR branches to ``origin``; don't push to ``upstream`` (the branch
+protection on ``apache/airflow`` will reject it anyway). Working on dedicated
+branches is recommended, though developing directly on your fork's ``main`` is
+tolerated — see `Contribution Workflow </contributing-docs/18_contribution_workflow.rst#step-4-prepare-pr>`_.
+
+If your existing checkout uses different names (for example ``apache`` for the
+Apache remote, or ``origin`` pointing at ``apache/airflow`` with your fork under
+another name), rename them to match the convention. Common migrations:
+
+.. code-block:: bash
+
+ # Case 1: upstream is currently named "apache"
+ git remote rename apache upstream
+
+ # Case 2: "origin" points at apache/airflow and your fork is named "fork"
+ git remote rename origin upstream
+ git remote rename fork origin
+
+ # Case 3: upstream is missing entirely
+ git remote add upstream https://github.com/apache/airflow.git
+ # ... or via SSH:
+ git remote add upstream git@github.com:apache/airflow.git
+
+Then confirm with ``git remote -v``. Ad-hoc remote names still work for one-off
+commands, but the helper scripts and documented workflows below all assume
+``upstream`` / ``origin``.
+
Airflow Git Branches
====================
@@ -95,7 +133,7 @@ How to sync your fork
When you have your fork, you should periodically synchronize the main of your fork with the
Apache Airflow main. In order to do that you can ``git pull --rebase`` to your local git repository from
-apache remote and push the main (often with ``--force`` to your fork). There is also an easy
+the ``upstream`` remote and push the main (often with ``--force`` to your fork). There is also an easy
way to sync your fork in GitHub's web UI with the `Fetch upstream feature
<https://docs.github.com/en/github/collaborating-with-pull-requests/working-with-forks/syncing-a-fork#syncing-a-fork-from-the-web-ui>`_.
@@ -166,30 +204,30 @@ First of all, we suggest you read about the rebase workflow here:
`Merging vs. rebasing <https://www.atlassian.com/git/tutorials/merging-vs-rebasing>`_. This is an
excellent article that describes all the ins/outs of the rebase workflow. I recommend keeping it for future reference.
-The goal of rebasing your PR on top of ``apache/main`` is to "transplant" your change on top of
+The goal of rebasing your PR on top of ``upstream/main`` is to "transplant" your change on top of
the latest changes that are merged by others. It also allows you to fix all the conflicts
-that arise as a result of other people changing the same files as you and merging the changes to ``apache/main``.
+that arise as a result of other people changing the same files as you and merging the changes to ``upstream/main``.
Here is how rebase looks in practice (you can find a summary below these detailed steps):
1. You first need to add the Apache project remote to your git repository. This is only necessary once,
-so if it's not the first time you are following this tutorial you can skip this step. In this example,
-we will be adding the remote as "apache" so you can refer to it easily
+ so if it's not the first time you are following this tutorial you can skip this step. Per the
+ `Git remote naming conventions`_ we add it as ``upstream``:
-* If you use ssh: ``git remote add apache git@github.com:apache/airflow.git``
-* If you use https: ``git remote add apache https://github.com/apache/airflow.git``
+ * If you use ssh: ``git remote add upstream git@github.com:apache/airflow.git``
+ * If you use https: ``git remote add upstream https://github.com/apache/airflow.git``
-2. You then need to make sure that you have the latest main fetched from the ``apache`` repository. You can do this
+2. You then need to make sure that you have the latest main fetched from the ``upstream`` repository. You can do this
via
- ``git fetch apache`` (to fetch apache remote)
+ ``git fetch upstream`` (to fetch upstream remote)
``git fetch --all`` (to fetch all remotes)
3. Assuming that your feature is in a branch in your repository called ``my-branch`` you can easily check
what is the base commit you should rebase from via
- ``git merge-base my-branch apache/main``
+ ``git merge-base my-branch upstream/main``
This will print the HASH of the base commit which you should use to rebase your feature from.
For example: ``5abce471e0690c6b8d06ca25685b0845c5fd270f``. Copy that HASH and go to the next step.
@@ -228,11 +266,11 @@ we will be adding the remote as "apache" so you can refer to it easily
6. Rebase
- ``git rebase HASH --onto apache/main``
+ ``git rebase HASH --onto upstream/main``
For example:
- ``git rebase 5abce471e0690c6b8d06ca25685b0845c5fd270f --onto apache/main``
+ ``git rebase 5abce471e0690c6b8d06ca25685b0845c5fd270f --onto upstream/main``
Rebasing is a good practice recommended to follow for all code changes.
@@ -276,9 +314,9 @@ Useful when you understand the flow but don't remember the steps and want a quic
git fetch --all
git add .
git commit
- git merge-base my-branch apache/main
+ git merge-base my-branch upstream/main
git checkout my-branch
- git rebase HASH --onto apache/main
+ git rebase HASH --onto upstream/main
git push --force-with-lease
-------
diff --git a/contributing-docs/18_contribution_workflow.rst b/contributing-docs/18_contribution_workflow.rst
index 5a4e8d524cf..e217154e950 100644
--- a/contributing-docs/18_contribution_workflow.rst
+++ b/contributing-docs/18_contribution_workflow.rst
@@ -165,15 +165,18 @@ Step 4: Prepare PR
`How to sync your fork <10_working_with_git.rst#how-to-sync-your-fork>`_ for details.
* Create a local branch for your development. Make sure to use latest
- ``apache/main`` as base for the branch. See `How to Rebase PR </contributing-docs/10_working_with_git.rst#how-to-rebase-pr>`_ for some details
- on setting up the ``apache`` remote. Note, some people develop their changes directly in their own
- ``main`` branches - this is OK and you can make PR from your main to ``apache/main`` but we
+ ``upstream/main`` as base for the branch. See `How to Rebase PR </contributing-docs/10_working_with_git.rst#how-to-rebase-pr>`_ for details
+ on setting up the ``upstream`` remote (Airflow standardises on ``upstream`` →
+ ``apache/airflow`` and ``origin`` → your fork — see
+ `Git remote naming conventions </contributing-docs/10_working_with_git.rst#git-remote-naming-conventions>`_).
+ Note, some people develop their changes directly in their own
+ ``main`` branches - this is OK and you can make PR from your main to ``upstream/main`` but we
recommend to always create a local branch for your development. This allows you to easily compare
changes, have several changes that you work on at the same time and many more.
- If you have ``apache`` set as remote then you can make sure that you have latest changes in your main
- by ``git pull apache main`` when you are in the local ``main`` branch. If you have conflicts and
+ With ``upstream`` configured you can make sure that you have the latest changes in your main
+ by ``git pull upstream main`` when you are in the local ``main`` branch. If you have conflicts and
want to override your locally changed main you can override your local changes with
- ``git fetch apache; git reset --hard apache/main``.
+ ``git fetch upstream; git reset --hard upstream/main``.
* Modify the class and add necessary code and unit tests.
diff --git a/dev/MANUALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md b/dev/MANUALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md
index 1d34276d438..68104fee02d 100644
--- a/dev/MANUALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md
+++ b/dev/MANUALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md
@@ -279,13 +279,15 @@ This is a step-by-step instruction on how to use it:
1. You need to have "airflow" repository checked out separately from the repository you are working on. For
example in `/home/myuser/airflow-constraints` folder.
2. You need to checkout `constraints-main` branch in this repository. By default the command expects that
- there is a remote named "apache" pointing to the official Apache repository. You can override this
- by passing `--remote-name` option to the command.
-3. You need to run `breeze release-management update-constraints` command. The `breeze` command comes usually
- from another clone of airflow repository - usually from the `main` branch. You should pass those options to
+ there is a remote named "upstream" pointing to the `apache/airflow` repository (the standard remote
+ naming convention — see
+ [`contributing-docs/10_working_with_git.rst`](../contributing-docs/10_working_with_git.rst#git-remote-naming-conventions)).
+ You can override this by passing `--remote-name` option to the command.
+3. You need to run `breeze release-management update-constraints` command. Typically, `breeze` is run
+ from a separate clone of the Airflow repository, on the `main` branch. You should pass those options to
the command:
* path to the "constraints" repository
- * remote name where the constraints should be pushed (optionally - default "apache")
+ * remote name where the constraints should be pushed (optionally - default "upstream")
* list of airflow versions to update constraints for
* list of constraints to update in the form of "package==version" (you can specify it multiple times)
* message to be used in the commit message
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index 36d4b37ebb9..f6e2c9b2ec8 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -235,9 +235,9 @@ You are likely want to cherry-pick some of the latest doc changes in order to br
explanations added to the documentation. Usually you can see the list of such changes via:
```shell
-git fetch apache
-git log --oneline apache/v3-2-test | sed -n 's/.*\((#[0-9]*)\)$/\1/p' > /tmp/merged
-git log --oneline --decorate apache/v2-2-stable..apache/main -- docs/apache-airflow docs/docker-stack/ | grep -vf /tmp/merged
+git fetch upstream
+git log --oneline upstream/v3-2-test | sed -n 's/.*\((#[0-9]*)\)$/\1/p' > /tmp/merged
+git log --oneline --decorate upstream/v2-2-stable..upstream/main -- docs/apache-airflow docs/docker-stack/ | grep -vf /tmp/merged
```
Those changes that are "doc-only" changes should be marked with `type:doc-only` label so that they
@@ -245,8 +245,22 @@ land in documentation part of the changelog. The tool to review and assign the l
## Making the cherry picking
-It is recommended to clone Airflow upstream (not your fork) and run the commands on
-the relevant test branch in this clone. That way origin points to the upstream repo.
+It is recommended to clone Airflow from `apache/airflow` directly (not your fork) into a
+dedicated release-manager checkout and run the commands on the relevant test branch there.
+This repo follows the standard convention that `upstream` → `apache/airflow` and `origin`
+→ your fork (see
+[`contributing-docs/10_working_with_git.rst`](../contributing-docs/10_working_with_git.rst#git-remote-naming-conventions)),
+so in this release-manager clone add `apache/airflow` as `upstream`:
+
+```shell
+git remote add upstream https://github.com/apache/airflow.git
+git fetch upstream
+```
+
+All the commands in this document assume `upstream` is the remote that tracks
+`apache/airflow`. If you previously set this up under a different name (e.g. `apache`),
+either rename it with `git remote rename apache upstream` or pass the alternative name
+via the `--remote-name` option where the commands accept it.
To see cherry picking candidates (unmerged PR with the appropriate milestone), from the test
branch you can run:
@@ -282,7 +296,7 @@ We have the tool that allows to review cherry-picked PRs and assign the labels
It allows to manually review and assign milestones and labels to cherry-picked PRs:
```shell
-./dev/assign_cherry_picked_prs_with_milestone.py assign-prs --previous-release v2-2-stable --current-release apache/v2-2-test --milestone-number 48
+./dev/assign_cherry_picked_prs_with_milestone.py assign-prs --previous-release v2-2-stable --current-release upstream/v2-2-test --milestone-number 48
```
It summarises the state of each cherry-picked PR including information whether it is going to be
@@ -298,7 +312,7 @@ assumes the `--skip-assigned` flag, so that the summary can be produced without
```shell
./dev/assign_cherry_picked_prs_with_milestone.py assign-prs --previous-release v2-2-stable \
- --current-release apache/v2-2-test --milestone-number 48 --skip-assigned --assume-yes --print-summary \
+ --current-release upstream/v2-2-test --milestone-number 48 --skip-assigned --assume-yes --print-summary \
--output-folder /tmp
```
@@ -324,13 +338,13 @@ git show --format=tformat:"" --stat --name-only $(cat /tmp/doc-only-changes.txt)
Then if you see suspicious file (example airflow/sensors/base.py) you can find details on where they came from:
```shell
-git log apache/v3-2-test --format="%H" -- airflow/sensors/base.py | grep -f /tmp/doc-only-changes.txt | xargs git show
+git log upstream/v3-2-test --format="%H" -- airflow/sensors/base.py | grep -f /tmp/doc-only-changes.txt | xargs git show
```
And the URL to the PR it comes from:
```shell
-git log apache/v3-2-test --format="%H" -- airflow/sensors/base.py | grep -f /tmp/doc-only-changes.txt | \
+git log upstream/v3-2-test --format="%H" -- airflow/sensors/base.py | grep -f /tmp/doc-only-changes.txt | \
xargs -n 1 git log --oneline --max-count=1 | \
sed s'/.*(#\([0-9]*\))$/https:\/\/github.com\/apache\/airflow\/pull\/\1/'
```
@@ -422,7 +436,7 @@ uv tool install -e ./dev/breeze
```shell script
git checkout v${VERSION_BRANCH}-test
- git reset --hard origin/v${VERSION_BRANCH}-test
+ git reset --hard upstream/v${VERSION_BRANCH}-test
```
- Create a new branch from v${VERSION_BRANCH}-test
@@ -573,13 +587,14 @@ uv tool install -e ./dev/breeze
Before running the actual release command, you can safely test it using:
```shell script
- # Test with dry-run (shows what would be executed without doing it)
+ # Test with dry-run (shows what would be executed without doing it).
+ # --remote-name defaults to "upstream" per the project convention, so only
+ # pass it explicitly if you set apache/airflow up under a different name.
breeze release-management start-rc-process \
--version ${VERSION_RC} \
--previous-version ${PREVIOUS_VERSION} \
--task-sdk-version ${TASK_SDK_VERSION_RC} \
--sync-branch ${SYNC_BRANCH} \
- --remote-name upstream \
--dry-run
```
@@ -837,7 +852,7 @@ VERSION_SUFFIX=rc1
VERSION_RC=${VERSION}${VERSION_SUFFIX}
TASK_SDK_VERSION=X.Y.Z
TASK_SDK_VERSION_RC=${TASK_SDK_VERSION}${VERSION_SUFFIX}
-git fetch apache --tags
+git fetch upstream --tags
git checkout ${VERSION_RC}
export AIRFLOW_REPO_ROOT=$(pwd)
rm -rf dist/*
diff --git a/dev/README_RELEASE_AIRFLOWCTL.md b/dev/README_RELEASE_AIRFLOWCTL.md
index 3509a3ebbba..d8bb5fd6fb7 100644
--- a/dev/README_RELEASE_AIRFLOWCTL.md
+++ b/dev/README_RELEASE_AIRFLOWCTL.md
@@ -167,11 +167,11 @@ export CTL_VERSION_BRANCH=0-2
# most recently released X.Y.Z, e.g. v3-2-stable.
export AIRFLOW_STABLE_BRANCH=v3-2-stable
-git fetch apache
-git checkout -b "airflow-ctl/v${CTL_VERSION_BRANCH}-test" "apache/${AIRFLOW_STABLE_BRANCH}"
-git push apache "airflow-ctl/v${CTL_VERSION_BRANCH}-test"
+git fetch upstream
+git checkout -b "airflow-ctl/v${CTL_VERSION_BRANCH}-test" "upstream/${AIRFLOW_STABLE_BRANCH}"
+git push upstream "airflow-ctl/v${CTL_VERSION_BRANCH}-test"
git checkout -b "airflow-ctl/v${CTL_VERSION_BRANCH}-stable" "airflow-ctl/v${CTL_VERSION_BRANCH}-test"
-git push apache "airflow-ctl/v${CTL_VERSION_BRANCH}-stable"
+git push upstream "airflow-ctl/v${CTL_VERSION_BRANCH}-stable"
```
## Add branch protection for the new stable branch
@@ -242,14 +242,14 @@ branch is what you expect:
```shell script
# airflow-ctl commits on the test branch since the previous release.
git log --oneline \
- "airflow-ctl/${PREVIOUS_VERSION}..apache/airflow-ctl/v${CTL_VERSION_BRANCH}-test" -- airflow-ctl/
+ "airflow-ctl/${PREVIOUS_VERSION}..upstream/airflow-ctl/v${CTL_VERSION_BRANCH}-test" -- airflow-ctl/
# Compare against main to spot commits that have NOT yet been cherry-picked.
git log --oneline \
- "airflow-ctl/${PREVIOUS_VERSION}..apache/main" -- airflow-ctl/
+ "airflow-ctl/${PREVIOUS_VERSION}..upstream/main" -- airflow-ctl/
```
Everywhere below that mentions "the release branch", substitute
-`apache/airflow-ctl/v${CTL_VERSION_BRANCH}-stable` (or `-test` under the
+`upstream/airflow-ctl/v${CTL_VERSION_BRANCH}-stable` (or `-test` under the
first-RC shortcut). In particular:
- The release-prep PR (`Commit the version bump and release notes via a
@@ -311,9 +311,9 @@ merged PR" step — the release-prep PR also targets
`airflow-ctl/vX-Y-stable`.
```shell script
-git fetch apache
+git fetch upstream
git checkout "airflow-ctl/v${CTL_VERSION_BRANCH}-stable"
-git reset --hard "apache/airflow-ctl/v${CTL_VERSION_BRANCH}-stable"
+git reset --hard "upstream/airflow-ctl/v${CTL_VERSION_BRANCH}-stable"
```
# Airflow-ctl versioning
@@ -420,7 +420,7 @@ git add airflow-ctl/src/airflowctl/__init__.py airflow-ctl/RELEASE_NOTES.rst
# Also `git rm` any stale newsfragments you cleaned up
git commit -m "Prepare airflow-ctl ${VERSION_RC} release"
-# Push to your fork (NOT to apache)
+# Push to your fork (origin), NOT to upstream (apache/airflow)
git push -u origin "prepare-airflow-ctl-${VERSION_RC}"
# Open the PR in the browser, pre-filled. Adjust --base to the release branch.
@@ -441,7 +441,7 @@ your local `HEAD` matches the commit you are about to tag:
# Substitute the branch you are releasing from.
RELEASE_BRANCH="airflow-ctl/v${CTL_VERSION_BRANCH}-stable" # or -test under the first-RC shortcut
git checkout "${RELEASE_BRANCH}"
-git pull apache "${RELEASE_BRANCH}"
+git pull upstream "${RELEASE_BRANCH}"
```
## Build airflow-ctl distributions for SVN apache upload
@@ -520,8 +520,9 @@ rm -rf ${AIRFLOW_REPO_ROOT}/dist/*
## Add tags in git
-Assume that your remote for apache repository is called `apache` you should now
-set tags for the airflow-ctl in the repo.
+These instructions assume the standard remote naming convention
+(`upstream` → `apache/airflow`, `origin` → your fork). Set tags for airflow-ctl
+in the repo.
**Prerequisite:** the version-bump + release-notes PR from "Commit the version
bump and release notes via a merged PR" must already be merged, and your local
@@ -533,7 +534,7 @@ and lead to annoying errors. The default behaviour would be to clean such local
```shell script
git tag -s "airflow-ctl/${VERSION_RC}"
-git push apache "airflow-ctl/${VERSION_RC}"
+git push upstream "airflow-ctl/${VERSION_RC}"
```
* Release candidate packages. **Default to the Docker build** per the
@@ -1018,7 +1019,7 @@ Choose the tag you used for release:
```shell
cd "${AIRFLOW_REPO_ROOT}"
-git fetch apache --tags --force
+git fetch upstream --tags --force
git checkout airflow-ctl/${VERSION_RC}
```
@@ -1398,8 +1399,9 @@ Copy links to updated package and save it on the side. You will need it for the
## Add the final release tag in git
-Assume that your remote for apache repository is called `apache` you should now
-set tags for airflow-ctl in the repo.
+These instructions assume the standard remote naming convention
+(`upstream` → `apache/airflow`, `origin` → your fork). Set tags for airflow-ctl
+in the repo.
Sometimes in cases when there is a connectivity issue to GitHub, it might be possible that local tags get created
and lead to annoying errors. The default behaviour would be to clean such local tags up.
@@ -1408,7 +1410,7 @@ If you want to disable this behaviour, set the env **CLEAN_LOCAL_TAGS** to false
```shell script
git tag -s airflow-ctl/${VERSION}
-git push apache airflow-ctl/${VERSION}
+git push upstream airflow-ctl/${VERSION}
```
## Publish documentation
diff --git a/dev/README_RELEASE_HELM_CHART.md b/dev/README_RELEASE_HELM_CHART.md
index 0e476d031cf..65e46b95902 100644
--- a/dev/README_RELEASE_HELM_CHART.md
+++ b/dev/README_RELEASE_HELM_CHART.md
@@ -214,12 +214,15 @@ the same between voted release candidate and final release.
Because of this the version in the built artifacts that will become the
official Apache releases must not include the rcN suffix.
-Make sure you have `apache` remote set up pointing to the apache git repo.
+Make sure you have the `upstream` remote set up pointing to the apache git repo
+(per the standard convention `upstream` → `apache/airflow`, `origin` → your fork —
+see
+[`contributing-docs/10_working_with_git.rst`](../contributing-docs/10_working_with_git.rst#git-remote-naming-conventions)).
If needed, add it with:
```shell
-git remote add apache git@github.com:apache/airflow.git
-git fetch apache
+git remote add upstream git@github.com:apache/airflow.git
+git fetch upstream
```
- We currently release Helm Chart from `main` branch:
@@ -233,7 +236,7 @@ git checkout apache/chart/v1-2x-test
For releasing 2.x.x and onwards
```shell
-git checkout apache/main
+git checkout upstream/main
```
- Clean the checkout: (note that this step will also clean any IDE settings you might have so better to
@@ -359,7 +362,7 @@ popd
```shell
cd ${AIRFLOW_REPO_ROOT}
- git push apache tag helm-chart/${VERSION}${VERSION_SUFFIX}
+ git push upstream tag helm-chart/${VERSION}${VERSION_SUFFIX}
```
## Publish rc documentation
@@ -863,7 +866,7 @@ Create and push the release tag:
cd "${AIRFLOW_REPO_ROOT}"
git checkout helm-chart/${VERSION}${VERSION_SUFFIX}
git tag -s helm-chart/${VERSION} -m "Apache Airflow Helm Chart ${VERSION}"
-git push apache helm-chart/${VERSION}
+git push upstream helm-chart/${VERSION}
```
## Publish final documentation
diff --git a/dev/README_RELEASE_PROVIDERS.md b/dev/README_RELEASE_PROVIDERS.md
index d274c400dff..b1c6e23f660 100644
--- a/dev/README_RELEASE_PROVIDERS.md
+++ b/dev/README_RELEASE_PROVIDERS.md
@@ -401,14 +401,16 @@ rm -rf ${AIRFLOW_REPO_ROOT}/dist/*
* Release candidate packages:
-Assume that your remote for apache repository is called `apache` you should now
-set tags for the providers in the repo.
+These instructions assume the standard remote naming convention
+(`upstream` → `apache/airflow`, `origin` → your fork — see
+[`contributing-docs/10_working_with_git.rst`](../contributing-docs/10_working_with_git.rst#git-remote-naming-conventions)).
+Set tags for the providers in the repo.
```shell script
echo "Tagging with providers/${RELEASE_DATE}"
git tag -s providers/${RELEASE_DATE} -m "Tag providers for ${RELEASE_DATE}" --force
-git push apache providers/${RELEASE_DATE}
+git push upstream providers/${RELEASE_DATE}
breeze release-management prepare-provider-distributions --include-removed-providers --distribution-format both
breeze release-management prepare-tarball --tarball-type apache_airflow_providers --version "${RELEASE_DATE}"
```
@@ -421,7 +423,7 @@ if you only build few packages, run:
```shell script
echo "Tagging with providers/${RELEASE_DATE}"
git tag -s providers/${RELEASE_DATE} -m "Tag providers for ${RELEASE_DATE}" --force
-git push apache providers/${RELEASE_DATE}
+git push upstream providers/${RELEASE_DATE}
breeze release-management prepare-provider-distributions --include-removed-providers --distribution-format both PACKAGE PACKAGE ....
breeze release-management prepare-tarball --tarball-type apache_airflow_providers --version "${RELEASE_DATE}"
@@ -853,7 +855,7 @@ cd "$AIRFLOW_REPO_ROOT"
```shell
cd "$AIRFLOW_REPO_ROOT"
-git fetch apache --tags
+git fetch upstream --tags
git checkout providers/${RELEASE_DATE}
```
@@ -1390,8 +1392,13 @@ Copy links to updated packages, sort it alphabetically and save it on the side.
## Add the final release tag in git
-Assume that your remote for apache repository is called `apache` you should now
-set tags for the providers in the repository.
+These instructions assume the standard remote naming convention
+(`upstream` → `apache/airflow`, `origin` → your fork — see
+[`contributing-docs/10_working_with_git.rst`](../contributing-docs/10_working_with_git.rst#git-remote-naming-conventions)).
+`breeze release-management tag-providers` auto-detects which of your remotes points
+at `apache/airflow`, so it also works for release-manager setups where the
+apache/airflow clone is configured as `origin`. Set tags for the providers in the
+repository.
Sometimes in cases when there is a connectivity issue to GitHub, it might be possible that local tags get created
and lead to annoying errors. The default behavior would be to clean such local tags up.
@@ -1468,7 +1475,7 @@ Create PR and open it to be merged:
```shell script
cd "$AIRFLOW_REPO_ROOT"
git checkout main
-git pull apache main
+git pull upstream main
current_date=$(date '+%Y-%m-%d%n')
branch="update-providers-metadata-${current_date}"
git checkout -b "${branch}"
diff --git a/dev/README_RELEASE_PYTHON_CLIENT.md b/dev/README_RELEASE_PYTHON_CLIENT.md
index bcecb641572..5735358aa15 100644
--- a/dev/README_RELEASE_PYTHON_CLIENT.md
+++ b/dev/README_RELEASE_PYTHON_CLIENT.md
@@ -181,7 +181,7 @@ git diff HEAD
git checkout -b release-${VERSION}
git add .
git commit -m "Update Python Client to ${VERSION_RC}"
-git push apache release-${VERSION}
+git push upstream release-${VERSION}
```
Then open a PR and merge it into main.
@@ -195,10 +195,10 @@ Then open a PR and merge it into main.
```shell script
cd ${AIRFLOW_REPO_ROOT}
git tag -s python-client/${VERSION_RC} -m "Airflow Python Client ${VERSION_RC}"
-git push apache python-client/${VERSION_RC}
+git push upstream python-client/${VERSION_RC}
cd ${CLIENT_REPO_ROOT}
git tag -s ${VERSION_RC} -m "Airflow Python Client ${VERSION_RC}"
-git push apache tag ${VERSION_RC}
+git push upstream tag ${VERSION_RC}
```
- Build the source package after the above tags have been pushed:
@@ -492,11 +492,14 @@ binary-reproduced when built from the sources.
cd "${AIRFLOW_REPO_ROOT}"
```
-2) Check out the ``python-client`` tag (assume apache is the remote name of the repository):
+2) Check out the ``python-client`` tag (the commands below assume the standard
+ remote naming convention `upstream` → `apache/airflow`, `origin` → your fork —
+ see
+ [`contributing-docs/10_working_with_git.rst`](../contributing-docs/10_working_with_git.rst#git-remote-naming-conventions)):
```shell
cd "${AIRFLOW_REPO_ROOT}"
-git fetch apache --tags
+git fetch upstream --tags
git checkout python-client/${VERSION_RC}
```
@@ -880,7 +883,7 @@ twine upload -r pypi *${VERSION}.tar.gz *.whl
cd ${AIRFLOW_REPO_ROOT}
git checkout python-client/${VERSION}${VERSION_SUFFIX}
git tag -s python-client/${VERSION} -m "Airflow Python Client ${VERSION}"
-git push apache tag python-client/${VERSION}
+git push upstream tag python-client/${VERSION}
cd ${CLIENT_REPO_ROOT}
git checkout ${VERSION}${VERSION_SUFFIX}
git tag -s ${VERSION} -m ${VERSION}
diff --git a/dev/breeze/doc/adr/0003-bootstrapping-virtual-environment.md b/dev/breeze/doc/adr/0003-bootstrapping-virtual-environment.md
index a2788b57c4f..bd8173a4e33 100644
--- a/dev/breeze/doc/adr/0003-bootstrapping-virtual-environment.md
+++ b/dev/breeze/doc/adr/0003-bootstrapping-virtual-environment.md
@@ -68,7 +68,7 @@ of the user who is developing Airflow.
./Breeze should use the version of Breeze that is available in this version
-* git rebase --onto apache/main
+* git rebase --onto upstream/main
./Breeze should be automatically updated to the latest version available
in main (including dependencies)
diff --git a/dev/breeze/doc/images/output_release-management_start-rc-process.svg b/dev/breeze/doc/images/output_release-management_start-rc-process.svg
index e5862980106..19f8f94d5d3 100644
--- a/dev/breeze/doc/images/output_release-management_start-rc-process.svg
+++ b/dev/breeze/doc/images/output_release-management_start-rc-process.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 586.8" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -45,7 +45,7 @@
<defs>
<clipPath id="breeze-release-management-start-rc-process-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
+ <rect x="0" y="0" width="1463.0" height="535.8" />
</clipPath>
<clipPath id="breeze-release-management-start-rc-process-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -101,9 +101,18 @@
<clipPath id="breeze-release-management-start-rc-process-line-17">
<rect x="0" y="416.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-release-management-start-rc-process-line-18">
+ <rect x="0" y="440.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-start-rc-process-line-19">
+ <rect x="0" y="465.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-start-rc-process-line-20">
+ <rect x="0" y="489.5" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="breeze-release-management-start-rc-process-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management start-rc-process</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="584.8" rx="8"/><text class="breeze-release-management-start-rc-process-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management start-rc-process</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -123,15 +132,18 @@
</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-7)">│</text><text class="breeze-release-management-start-rc-process-r6" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-7)">*</text><text class="breeze-release-management-start-rc-process-r4" x="61" y="190.8" textLength="219.6" clip-path="url(#breeze-release-management-star [...]
</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-8)">│</text><text class="breeze-release-management-start-rc-process-r6" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-8)">*</text><text class="breeze-release-management-start-rc-process-r4" x="61" y="215.2" textLength="219.6" clip-path="url(#breeze-release-management-star [...]
</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-9)">│</text><text class="breeze-release-management-start-rc-process-r4" x="61" y="239.6" textLength="219.6" clip-path="url(#breeze-release-management-start-rc-process-line-9)">--github-token    </text><text class="breeze-release-management-start-rc-process-r1" x="305" y="239.6" textLength="890.6" clip-path [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-10)">│</text><text class="breeze-release-management-start-rc-process-r4" x="61" y="264" textLength="219.6" clip-path="url(#breeze-release-management-start-rc-process-line-10)">--remote-name     </text><text class="breeze-release-management-start-rc-process-r1" x="305" y="264" textLength="549" clip-path= [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-11)">│</text><text class="breeze-release-management-start-rc-process-r6" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-11)">*</text><text class="breeze-release-management-start-rc-process-r4" x="61" y="288.4" textLength="219.6" clip-path="url(#breeze-release-management-st [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-release-management-start-rc-process-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-start-rc-process-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-12)">
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-release-management-start-rc-process-line-13)">╭─</text><text class="breeze-release-management-start-rc-process-r5" x="24.4" y="337.2" textLength="195.2" clip-path="url(#breeze-release-management-start-rc-process-line-13)"> Common options </text><text class="breeze-release-management-start-rc-process-r5" x="219.6" y="337.2" textLength="1220" clip-path= [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-14)">│</text><text class="breeze-release-management-start-rc-process-r4" x="24.4" y="361.6" textLength="109.8" clip-path="url(#breeze-release-management-start-rc-process-line-14)">--answer </text><text class="breeze-release-management-start-rc-process-r9" x="158.6" y="361.6" textLength="24.4" clip-path="url(#breeze-relea [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-15)">│</text><text class="breeze-release-management-start-rc-process-r4" x="24.4" y="386" textLength="109.8" clip-path="url(#breeze-release-management-start-rc-process-line-15)">--dry-run</text><text class="breeze-release-management-start-rc-process-r9" x="158.6" y="386" textLength="24.4" clip-path="url(#breeze-release-manageme [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-16)">│</text><text class="breeze-release-management-start-rc-process-r4" x="24.4" y="410.4" textLength="109.8" clip-path="url(#breeze-release-management-start-rc-process-line-16)">--verbose</text><text class="breeze-release-management-start-rc-process-r9" x="158.6" y="410.4" textLength="24.4" clip-path="url(#breeze-release-ma [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-17)">│</text><text class="breeze-release-management-start-rc-process-r4" x="24.4" y="434.8" textLength="109.8" clip-path="url(#breeze-release-management-start-rc-process-line-17)">--help   </text><text class="breeze-release-management-start-rc-process-r9" x="158.6" y="434.8" textLength="24.4" clip-path="url(#br [...]
-</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-release-management-start-rc-process-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-start-rc-process-r1" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-18)">
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-10)">│</text><text class="breeze-release-management-start-rc-process-r4" x="61" y="264" textLength="219.6" clip-path="url(#breeze-release-management-start-rc-process-line-10)">--remote-name     </text><text class="breeze-release-management-start-rc-process-r1" x="305" y="264" textLength="1134.6" clip-pa [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-11)">│</text><text class="breeze-release-management-start-rc-process-r1" x="305" y="288.4" textLength="1134.6" clip-path="url(#breeze-release-management-start-rc-process-line-11)">(default: 'upstream' per the standard remote naming convention — see     [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-12)">│</text><text class="breeze-release-management-start-rc-process-r1" x="305" y="312.8" textLength="1134.6" clip-path="url(#breeze-release-management-start-rc-process-line-12)">contributing-docs/10_working_with_git.rst). Override if your release clone uses a different  </te [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-13)">│</text><text class="breeze-release-management-start-rc-process-r1" x="305" y="337.2" textLength="829.6" clip-path="url(#breeze-release-management-start-rc-process-line-13)">name (for example 'origin' when you clone apache/airflow directly). </text><text class="breez [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-14)">│</text><text class="breeze-release-management-start-rc-process-r6" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-14)">*</text><text class="breeze-release-management-start-rc-process-r4" x="61" y="361.6" textLength="219.6" clip-path="url(#breeze-release-management-st [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="386" textLength="1464" clip-path="url(#breeze-release-management-start-rc-process-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-start-rc-process-r1" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-15)">
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-release-management-start-rc-process-line-16)">╭─</text><text class="breeze-release-management-start-rc-process-r5" x="24.4" y="410.4" textLength="195.2" clip-path="url(#breeze-release-management-start-rc-process-line-16)"> Common options </text><text class="breeze-release-management-start-rc-process-r5" x="219.6" y="410.4" textLength="1220" clip-path= [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-17)">│</text><text class="breeze-release-management-start-rc-process-r4" x="24.4" y="434.8" textLength="109.8" clip-path="url(#breeze-release-management-start-rc-process-line-17)">--answer </text><text class="breeze-release-management-start-rc-process-r9" x="158.6" y="434.8" textLength="24.4" clip-path="url(#breeze-relea [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-18)">│</text><text class="breeze-release-management-start-rc-process-r4" x="24.4" y="459.2" textLength="109.8" clip-path="url(#breeze-release-management-start-rc-process-line-18)">--dry-run</text><text class="breeze-release-management-start-rc-process-r9" x="158.6" y="459.2" textLength="24.4" clip-path="url(#breeze-release-ma [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-19)">│</text><text class="breeze-release-management-start-rc-process-r4" x="24.4" y="483.6" textLength="109.8" clip-path="url(#breeze-release-management-start-rc-process-line-19)">--verbose</text><text class="breeze-release-management-start-rc-process-r9" x="158.6" y="483.6" textLength="24.4" clip-path="url(#breeze-release-ma [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-20)">│</text><text class="breeze-release-management-start-rc-process-r4" x="24.4" y="508" textLength="109.8" clip-path="url(#breeze-release-management-start-rc-process-line-20)">--help   </text><text class="breeze-release-management-start-rc-process-r9" x="158.6" y="508" textLength="24.4" clip-path="url(#breeze-r [...]
+</text><text class="breeze-release-management-start-rc-process-r5" x="0" y="532.4" textLength="1464" clip-path="url(#breeze-release-management-start-rc-process-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-start-rc-process-r1" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-start-rc-process-line-21)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_release-management_start-rc-process.txt b/dev/breeze/doc/images/output_release-management_start-rc-process.txt
index 7026b7fdecc..d14840d6970 100644
--- a/dev/breeze/doc/images/output_release-management_start-rc-process.txt
+++ b/dev/breeze/doc/images/output_release-management_start-rc-process.txt
@@ -1 +1 @@
-59523e169ffeaf7e5f01b40986de7951
+a006314637c41486af2e6fd431391ad1
diff --git a/dev/breeze/doc/images/output_release-management_update-constraints.svg b/dev/breeze/doc/images/output_release-management_update-constraints.svg
index 18fd1a4dad6..62d6688e708 100644
--- a/dev/breeze/doc/images/output_release-management_update-constraints.svg
+++ b/dev/breeze/doc/images/output_release-management_update-constraints.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 708.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -45,7 +45,7 @@
<defs>
<clipPath id="breeze-release-management-update-constraints-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="657.8" />
+ <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
</clipPath>
<clipPath id="breeze-release-management-update-constraints-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -125,9 +125,12 @@
<clipPath id="breeze-release-management-update-constraints-line-25">
<rect x="0" y="611.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-release-management-update-constraints-line-26">
+ <rect x="0" y="635.9" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="706.8" rx="8"/><text class="breeze-release-management-update-constraints-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management update-constraints</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="731.2" rx="8"/><text class="breeze-release-management-update-constraints-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management update-constraints</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -146,24 +149,25 @@
</text><text class="breeze-release-management-update-constraints-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-6)">│</text><text class="breeze-release-management-update-constraints-r6" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-6)">*</text><text class="breeze-release-management-update-constraints-r4" x="61" y="166.4" textLength="219.6" clip-path="url(#breeze-release-manag [...]
</text><text class="breeze-release-management-update-constraints-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-7)">│</text><text class="breeze-release-management-update-constraints-r7" x="305" y="190.8" textLength="122" clip-path="url(#breeze-release-management-update-constraints-line-7)">[required]</text><text class="breeze-release-management-update-constraints-r8" x="439.2" y="190.8" textLength="134.2" clip-path="url(#breeze-rel [...]
</text><text class="breeze-release-management-update-constraints-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-8)">│</text><text class="breeze-release-management-update-constraints-r6" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-8)">*</text><text class="breeze-release-management-update-constraints-r4" x="61" y="215.2" textLength="219.6" clip-path="url(#breeze-release-manag [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-9)">│</text><text class="breeze-release-management-update-constraints-r4" x="61" y="239.6" textLength="219.6" clip-path="url(#breeze-release-management-update-constraints-line-9)">--remote-name     </text><text class="breeze-release-management-update-constraints-r1" x="305" y="239.6" textLength="5 [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="264" textLength="1464" clip-path="url(#breeze-release-management-update-constraints-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-constraints-r1" x="1464" y="264" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-10)">
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="288.4" textLength="24.4" clip-path="url(#breeze-release-management-update-constraints-line-11)">╭─</text><text class="breeze-release-management-update-constraints-r5" x="24.4" y="288.4" textLength="244" clip-path="url(#breeze-release-management-update-constraints-line-11)"> Selection criteria </text><text class="breeze-release-management-update-constraints-r5" x="268.4" y="288.4" textLength="1171 [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-12)">│</text><text class="breeze-release-management-update-constraints-r6" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-12)">*</text><text class="breeze-release-management-update-constraints-r4" x="61" y="312.8" textLength="317.2" clip-path="url(#breeze-release-man [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-13)">│</text><text class="breeze-release-management-update-constraints-r4" x="61" y="337.2" textLength="317.2" clip-path="url(#breeze-release-management-update-constraints-line-13)">--airflow-constraints-mode</text><text class="breeze-release-management-update-constraints-r1" x="402.6" y="337.2" textLength="1037" clip-pat [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-14)">│</text><text class="breeze-release-management-update-constraints-r8" x="402.6" y="361.6" textLength="866.2" clip-path="url(#breeze-release-management-update-constraints-line-14)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class="breeze-release-management-u [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="386" textLength="1464" clip-path="url(#breeze-release-management-update-constraints-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-constraints-r1" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-15)">
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-release-management-update-constraints-line-16)">╭─</text><text class="breeze-release-management-update-constraints-r5" x="24.4" y="410.4" textLength="231.8" clip-path="url(#breeze-release-management-update-constraints-line-16)"> Action to perform </text><text class="breeze-release-management-update-constraints-r5" x="256.2" y="410.4" textLength [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-17)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="434.8" textLength="244" clip-path="url(#breeze-release-management-update-constraints-line-17)">--updated-constraint</text><text class="breeze-release-management-update-constraints-r1" x="292.8" y="434.8" textLength="915" clip-path="url( [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-18)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="459.2" textLength="244" clip-path="url(#breeze-release-management-update-constraints-line-18)">--comment-file      </text><text class="breeze-release-management-update-constraints-r1" x="292.8" y="459.2" te [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-19)">│</text><text class="breeze-release-management-update-constraints-r1" x="292.8" y="483.6" textLength="146.4" clip-path="url(#breeze-release-management-update-constraints-line-19)">added yet). </text><text class="breeze-release-management-update-constraints-r8" x="439.2" y="483.6" textLength="73.2" clip-path [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="508" textLength="1464" clip-path="url(#breeze-release-management-update-constraints-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-constraints-r1" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-20)">
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="532.4" textLength="24.4" clip-path="url(#breeze-release-management-update-constraints-line-21)">╭─</text><text class="breeze-release-management-update-constraints-r5" x="24.4" y="532.4" textLength="195.2" clip-path="url(#breeze-release-management-update-constraints-line-21)"> Common options </text><text class="breeze-release-management-update-constraints-r5" x="219.6" y="532.4" textLength="1220" [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-22)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="556.8" textLength="109.8" clip-path="url(#breeze-release-management-update-constraints-line-22)">--verbose</text><text class="breeze-release-management-update-constraints-r9" x="158.6" y="556.8" textLength="24.4" clip-path="url(#breeze- [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-23)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="581.2" textLength="109.8" clip-path="url(#breeze-release-management-update-constraints-line-23)">--dry-run</text><text class="breeze-release-management-update-constraints-r9" x="158.6" y="581.2" textLength="24.4" clip-path="url(#breeze- [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-24)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="605.6" textLength="109.8" clip-path="url(#breeze-release-management-update-constraints-line-24)">--answer </text><text class="breeze-release-management-update-constraints-r9" x="158.6" y="605.6" textLength="24.4" clip-path="url(#br [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-25)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="630" textLength="109.8" clip-path="url(#breeze-release-management-update-constraints-line-25)">--help   </text><text class="breeze-release-management-update-constraints-r9" x="158.6" y="630" textLength="24.4" clip-path="url [...]
-</text><text class="breeze-release-management-update-constraints-r5" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-release-management-update-constraints-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-constraints-r1" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-26)">
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-9)">│</text><text class="breeze-release-management-update-constraints-r4" x="61" y="239.6" textLength="219.6" clip-path="url(#breeze-release-management-update-constraints-line-9)">--remote-name     </text><text class="breeze-release-management-update-constraints-r1" x="305" y="239.6" textLength="1 [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-10)">│</text><text class="breeze-release-management-update-constraints-r1" x="305" y="264" textLength="744.2" clip-path="url(#breeze-release-management-update-constraints-line-10)">convention — see contributing-docs/10_working_with_git.rst). </text><text class="breeze-release-management-update-constraint [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-release-management-update-constraints-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-constraints-r1" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-11)">
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-release-management-update-constraints-line-12)">╭─</text><text class="breeze-release-management-update-constraints-r5" x="24.4" y="312.8" textLength="244" clip-path="url(#breeze-release-management-update-constraints-line-12)"> Selection criteria </text><text class="breeze-release-management-update-constraints-r5" x="268.4" y="312.8" textLength="1171 [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-13)">│</text><text class="breeze-release-management-update-constraints-r6" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-13)">*</text><text class="breeze-release-management-update-constraints-r4" x="61" y="337.2" textLength="317.2" clip-path="url(#breeze-release-man [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-14)">│</text><text class="breeze-release-management-update-constraints-r4" x="61" y="361.6" textLength="317.2" clip-path="url(#breeze-release-management-update-constraints-line-14)">--airflow-constraints-mode</text><text class="breeze-release-management-update-constraints-r1" x="402.6" y="361.6" textLength="1037" clip-pat [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-15)">│</text><text class="breeze-release-management-update-constraints-r8" x="402.6" y="386" textLength="866.2" clip-path="url(#breeze-release-management-update-constraints-line-15)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class="breeze-release-management-updat [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="410.4" textLength="1464" clip-path="url(#breeze-release-management-update-constraints-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-constraints-r1" x="1464" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-16)">
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="434.8" textLength="24.4" clip-path="url(#breeze-release-management-update-constraints-line-17)">╭─</text><text class="breeze-release-management-update-constraints-r5" x="24.4" y="434.8" textLength="231.8" clip-path="url(#breeze-release-management-update-constraints-line-17)"> Action to perform </text><text class="breeze-release-management-update-constraints-r5" x="256.2" y="434.8" textLength [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-18)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="459.2" textLength="244" clip-path="url(#breeze-release-management-update-constraints-line-18)">--updated-constraint</text><text class="breeze-release-management-update-constraints-r1" x="292.8" y="459.2" textLength="915" clip-path="url( [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-19)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="483.6" textLength="244" clip-path="url(#breeze-release-management-update-constraints-line-19)">--comment-file      </text><text class="breeze-release-management-update-constraints-r1" x="292.8" y="483.6" te [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-20)">│</text><text class="breeze-release-management-update-constraints-r1" x="292.8" y="508" textLength="146.4" clip-path="url(#breeze-release-management-update-constraints-line-20)">added yet). </text><text class="breeze-release-management-update-constraints-r8" x="439.2" y="508" textLength="73.2" clip-path="url( [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="532.4" textLength="1464" clip-path="url(#breeze-release-management-update-constraints-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-constraints-r1" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-21)">
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="556.8" textLength="24.4" clip-path="url(#breeze-release-management-update-constraints-line-22)">╭─</text><text class="breeze-release-management-update-constraints-r5" x="24.4" y="556.8" textLength="195.2" clip-path="url(#breeze-release-management-update-constraints-line-22)"> Common options </text><text class="breeze-release-management-update-constraints-r5" x="219.6" y="556.8" textLength="1220" [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-23)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="581.2" textLength="109.8" clip-path="url(#breeze-release-management-update-constraints-line-23)">--verbose</text><text class="breeze-release-management-update-constraints-r9" x="158.6" y="581.2" textLength="24.4" clip-path="url(#breeze- [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-24)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="605.6" textLength="109.8" clip-path="url(#breeze-release-management-update-constraints-line-24)">--dry-run</text><text class="breeze-release-management-update-constraints-r9" x="158.6" y="605.6" textLength="24.4" clip-path="url(#breeze- [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-25)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="630" textLength="109.8" clip-path="url(#breeze-release-management-update-constraints-line-25)">--answer </text><text class="breeze-release-management-update-constraints-r9" x="158.6" y="630" textLength="24.4" clip-path="url(#breeze-r [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-26)">│</text><text class="breeze-release-management-update-constraints-r4" x="24.4" y="654.4" textLength="109.8" clip-path="url(#breeze-release-management-update-constraints-line-26)">--help   </text><text class="breeze-release-management-update-constraints-r9" x="158.6" y="654.4" textLength="24.4" clip-pat [...]
+</text><text class="breeze-release-management-update-constraints-r5" x="0" y="678.8" textLength="1464" clip-path="url(#breeze-release-management-update-constraints-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-constraints-r1" x="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-update-constraints-line-27)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_release-management_update-constraints.txt b/dev/breeze/doc/images/output_release-management_update-constraints.txt
index f85cfa6d149..666899d4f4c 100644
--- a/dev/breeze/doc/images/output_release-management_update-constraints.txt
+++ b/dev/breeze/doc/images/output_release-management_update-constraints.txt
@@ -1 +1 @@
-1ef2866635f42330fe813b8dc2121f6f
+5fb85915e160fde4096b70483e22e17b
diff --git a/dev/breeze/doc/images/output_sbom_update-sbom-information.svg b/dev/breeze/doc/images/output_sbom_update-sbom-information.svg
index e2f63d9d12c..9a4b0e74d5b 100644
--- a/dev/breeze/doc/images/output_sbom_update-sbom-information.svg
+++ b/dev/breeze/doc/images/output_sbom_update-sbom-information.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1318.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1392.0" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-sbom-update-sbom-information-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1267.8" />
+ <rect x="0" y="0" width="1463.0" height="1341.0" />
</clipPath>
<clipPath id="breeze-sbom-update-sbom-information-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -198,9 +198,18 @@
<clipPath id="breeze-sbom-update-sbom-information-line-50">
<rect x="0" y="1221.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-sbom-update-sbom-information-line-51">
+ <rect x="0" y="1245.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-sbom-update-sbom-information-line-52">
+ <rect x="0" y="1270.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-sbom-update-sbom-information-line-53">
+ <rect x="0" y="1294.7" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1316.8" rx="8"/><text class="breeze-sbom-update-sbom-information-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: sbom update-sbom-information</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1390" rx="8"/><text class="breeze-sbom-update-sbom-information-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: sbom update-sbom-information</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -227,41 +236,44 @@
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-14)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="378.2" y="361.6" textLength="183" clip-path="url(#breeze-sbom-update-sbom-information-line-14)">Only used when </text><text class="breeze-sbom-update-sbom-information-r4" x="561.2" y="361.6" textLength="329.4" clip-path="url(#breeze-sbom-update-sbom-informa [...]
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="386" textLength="1464" clip-path="url(#breeze-sbom-update-sbom-information-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-update-sbom-information-r1" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-15)">
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-16)">╭─</text><text class="breeze-sbom-update-sbom-information-r5" x="24.4" y="410.4" textLength="402.6" clip-path="url(#breeze-sbom-update-sbom-information-line-16)"> Update SBOM configuration flags </text><text class="breeze-sbom-update-sbom-information-r5" x="427" y="410.4" textLength="1012.6" clip-path="url(#br [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-17)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="434.8" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-17)">--remote-name                       </text><text class="bree [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-18)">│</text><text class="breeze-sbom-update-sbom-information-r6" x="488" y="459.2" textLength="85.4" clip-path="url(#breeze-sbom-update-sbom-information-line-18)">origin)</text><text class="breeze-sbom-update-sbom-information-r5" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-18)">│</text>< [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-19)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="483.6" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-19)">--airflow-version                   </text><text class="breeze-sbom-update-sbom- [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-20)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="508" textLength="122" clip-path="url(#breeze-sbom-update-sbom-information-line-20)">versions) </text><text class="breeze-sbom-update-sbom-information-r6" x="610" y="508" textLength="73.2" clip-path="url(#breeze-sbom-update-sbom-information-line-20)">(TEXT)</tex [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-21)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="532.4" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-21)">--airflow-constraints-reference     </text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="532.4" textLength="951.6" clip-path="url(#b [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-22)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="556.8" textLength="597.8" clip-path="url(#breeze-sbom-update-sbom-information-line-22)">generation. Defaults to constraints derived from </text><text class="breeze-sbom-update-sbom-information-r4" x="1085.8" y="556.8" textLength="207. [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-23)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="581.2" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-23)">--python-versions                   </text><text class="breeze-sbom-update-sbom- [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-24)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="605.6" textLength="341.6" clip-path="url(#breeze-sbom-update-sbom-information-line-24)">historical python versions) </text><text class="breeze-sbom-update-sbom-information-r6" x="829.6" y="605.6" textLength="610" clip-path="url(#breeze-sbom-update-s [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-25)">│</text><text class="breeze-sbom-update-sbom-information-r6" x="488" y="630" textLength="85.4" clip-path="url(#breeze-sbom-update-sbom-information-line-25)">| 3.14)</text><text class="breeze-sbom-update-sbom-information-r5" x="1451.8" y="630" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-25)">│</text><t [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-26)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="654.4" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-26)">--include-provider-dependencies     </text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="654.4" textLength="732" clip-path="url(#bre [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-27)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="678.8" textLength="195.2" clip-path="url(#breeze-sbom-update-sbom-information-line-27)">--include-python</text><text class="breeze-sbom-update-sbom-information-r1" x="219.6" y="678.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-27)" [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-28)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="703.2" textLength="158.6" clip-path="url(#breeze-sbom-update-sbom-information-line-28)">--include-npm</text><text class="breeze-sbom-update-sbom-information-r1" x="183" y="703.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-28)">/</t [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-29)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="727.6" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-29)">--all-combinations                  </text><text class="breeze-sbom-update-sbom-infor [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-30)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="488" y="752" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-30)">--include</text><text class="breeze-sbom-update-sbom-information-r1" x="597.8" y="752" textLength="841.8" clip-path="url(#breeze-sbom-update-sbom-information-line-30)"> flags& [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-31)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="776.4" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-31)">--package-filter                    </text><text class="breeze-sbom-update- [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-32)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="800.8" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-32)">matching the full package name, for example `apache-airflow-providers-*`.     </text><text class="breeze-sbom-update [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-33)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="825.2" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-33)">Useful when you want to selectseveral similarly named packages together.      </text><text class="bre [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-34)">│</text><text class="breeze-sbom-update-sbom-information-r6" x="488" y="849.6" textLength="524.6" clip-path="url(#breeze-sbom-update-sbom-information-line-34)">(apache-airflow-providers | apache-airflow)</text><text class="breeze-sbom-update-sbom-information-r5" x="1451.8" y="849.6" textLength="12.2" clip-path="url(#breeze-s [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-35)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="874" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-35)">--force                             [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-36)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="898.4" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-36)">--github-token                      </text><text class="breeze-sb [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="922.8" textLength="1464" clip-path="url(#breeze-sbom-update-sbom-information-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-update-sbom-information-r1" x="1464" y="922.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-37)">
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="947.2" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-38)">╭─</text><text class="breeze-sbom-update-sbom-information-r5" x="24.4" y="947.2" textLength="219.6" clip-path="url(#breeze-sbom-update-sbom-information-line-38)"> Parallel running </text><text class="breeze-sbom-update-sbom-information-r5" x="244" y="947.2" textLength="1195.6" clip-path="url(#breeze-sbom-update-sbom-inf [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-39)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="971.6" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-39)">--run-in-parallel        </text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="971.6" textLength="854" clip-path="url( [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-40)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="996" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-40)">--parallelism            </text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="996" textLength="927.2" [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-41)">│</text><text class="breeze-sbom-update-sbom-information-r6" x="353.8" y="1020.4" textLength="280.6" clip-path="url(#breeze-sbom-update-sbom-information-line-41)">(INTEGER RANGE 1<=x<=8)</text><text class="breeze-sbom-update-sbom-information-r5" x="1451.8" y="1020.4" textLength="12.2" clip-path="url(#breeze-sbom-updat [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-42)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1044.8" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-42)">--skip-cleanup           </text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="1044.8" textLength="73 [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-43)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1069.2" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-43)">--debug-resources        </text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="1069.2" textLength="768.6" clip-path= [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-44)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1093.6" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-44)">--include-success-outputs</text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="1093.6" textLength="841.8" clip-path="url(#breeze-sbom-update-sbom-informatio [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1118" textLength="1464" clip-path="url(#breeze-sbom-update-sbom-information-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-update-sbom-information-r1" x="1464" y="1118" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-45)">
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1142.4" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-46)">╭─</text><text class="breeze-sbom-update-sbom-information-r5" x="24.4" y="1142.4" textLength="195.2" clip-path="url(#breeze-sbom-update-sbom-information-line-46)"> Common options </text><text class="breeze-sbom-update-sbom-information-r5" x="219.6" y="1142.4" textLength="1220" clip-path="url(#breeze-sbom-update-sbom-in [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-47)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1166.8" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-47)">--verbose</text><text class="breeze-sbom-update-sbom-information-r7" x="158.6" y="1166.8" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-47)">-v< [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-48)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1191.2" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-48)">--dry-run</text><text class="breeze-sbom-update-sbom-information-r7" x="158.6" y="1191.2" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-48)">-D< [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-49)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1215.6" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-49)">--answer </text><text class="breeze-sbom-update-sbom-information-r7" x="158.6" y="1215.6" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-49) [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-50)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1240" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-50)">--help   </text><text class="breeze-sbom-update-sbom-information-r7" x="158.6" y="1240" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1264.4" textLength="1464" clip-path="url(#breeze-sbom-update-sbom-information-line-51)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-update-sbom-information-r1" x="1464" y="1264.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-51)">
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-17)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="434.8" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-17)">--remote-name                       </text><text class="bree [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-18)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="459.2" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-18)">the standard remote naming convention (see                  & [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-19)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="483.6" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-19)">contributing-docs/10_working_with_git.rst). Use 'origin' if your clone of     </text><text class="breeze-sbom-u [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-20)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="508" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-20)">apache/airflow is set up as origin. 'apache' is still accepted for back-compat</text><text class="breeze-sbom-updat [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-21)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="532.4" textLength="244" clip-path="url(#breeze-sbom-update-sbom-information-line-21)">with legacy clones. </text><text class="breeze-sbom-update-sbom-information-r5" x="732" y="532.4" textLength="231.8" clip-path="url(#breeze-sbom-update-sbom-inform [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-22)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="556.8" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-22)">--airflow-version                   </text><text class="breeze-sbom-update-sbom- [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-23)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="581.2" textLength="122" clip-path="url(#breeze-sbom-update-sbom-information-line-23)">versions) </text><text class="breeze-sbom-update-sbom-information-r6" x="610" y="581.2" textLength="73.2" clip-path="url(#breeze-sbom-update-sbom-information-line-23)">(TEXT [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-24)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="605.6" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-24)">--airflow-constraints-reference     </text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="605.6" textLength="951.6" clip-path="url(#b [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-25)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="630" textLength="597.8" clip-path="url(#breeze-sbom-update-sbom-information-line-25)">generation. Defaults to constraints derived from </text><text class="breeze-sbom-update-sbom-information-r4" x="1085.8" y="630" textLength="207.4" cli [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-26)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="654.4" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-26)">--python-versions                   </text><text class="breeze-sbom-update-sbom- [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-27)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="678.8" textLength="341.6" clip-path="url(#breeze-sbom-update-sbom-information-line-27)">historical python versions) </text><text class="breeze-sbom-update-sbom-information-r6" x="829.6" y="678.8" textLength="610" clip-path="url(#breeze-sbom-update-s [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-28)">│</text><text class="breeze-sbom-update-sbom-information-r6" x="488" y="703.2" textLength="85.4" clip-path="url(#breeze-sbom-update-sbom-information-line-28)">| 3.14)</text><text class="breeze-sbom-update-sbom-information-r5" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-28)">│</t [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-29)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="727.6" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-29)">--include-provider-dependencies     </text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="727.6" textLength="732" clip-path="url(#bre [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-30)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="752" textLength="195.2" clip-path="url(#breeze-sbom-update-sbom-information-line-30)">--include-python</text><text class="breeze-sbom-update-sbom-information-r1" x="219.6" y="752" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-30)">/</te [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-31)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="776.4" textLength="158.6" clip-path="url(#breeze-sbom-update-sbom-information-line-31)">--include-npm</text><text class="breeze-sbom-update-sbom-information-r1" x="183" y="776.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-31)">/</t [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-32)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="800.8" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-32)">--all-combinations                  </text><text class="breeze-sbom-update-sbom-infor [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-33)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="488" y="825.2" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-33)">--include</text><text class="breeze-sbom-update-sbom-information-r1" x="597.8" y="825.2" textLength="841.8" clip-path="url(#breeze-sbom-update-sbom-information-line-33)">  [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-34)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="849.6" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-34)">--package-filter                    </text><text class="breeze-sbom-update- [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-35)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="874" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-35)">matching the full package name, for example `apache-airflow-providers-*`.     </text><text class="breeze-sbom-update-sbo [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-36)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="898.4" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-36)">Useful when you want to selectseveral similarly named packages together.      </text><text class="bre [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-37)">│</text><text class="breeze-sbom-update-sbom-information-r6" x="488" y="922.8" textLength="524.6" clip-path="url(#breeze-sbom-update-sbom-information-line-37)">(apache-airflow-providers | apache-airflow)</text><text class="breeze-sbom-update-sbom-information-r5" x="1451.8" y="922.8" textLength="12.2" clip-path="url(#breeze-s [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-38)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="947.2" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-38)">--force                             [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-39)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="971.6" textLength="439.2" clip-path="url(#breeze-sbom-update-sbom-information-line-39)">--github-token                      </text><text class="breeze-sb [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="996" textLength="1464" clip-path="url(#breeze-sbom-update-sbom-information-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-update-sbom-information-r1" x="1464" y="996" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-40)">
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1020.4" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-41)">╭─</text><text class="breeze-sbom-update-sbom-information-r5" x="24.4" y="1020.4" textLength="219.6" clip-path="url(#breeze-sbom-update-sbom-information-line-41)"> Parallel running </text><text class="breeze-sbom-update-sbom-information-r5" x="244" y="1020.4" textLength="1195.6" clip-path="url(#breeze-sbom-update-sbom- [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-42)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1044.8" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-42)">--run-in-parallel        </text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="1044.8" textLength="854" clip-path="u [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-43)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1069.2" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-43)">--parallelism            </text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="1069.2" textLengt [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-44)">│</text><text class="breeze-sbom-update-sbom-information-r6" x="353.8" y="1093.6" textLength="280.6" clip-path="url(#breeze-sbom-update-sbom-information-line-44)">(INTEGER RANGE 1<=x<=8)</text><text class="breeze-sbom-update-sbom-information-r5" x="1451.8" y="1093.6" textLength="12.2" clip-path="url(#breeze-sbom-updat [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-45)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1118" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-45)">--skip-cleanup           </text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="1118" textLength="732" cli [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-46)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1142.4" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-46)">--debug-resources        </text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="1142.4" textLength="768.6" clip-path= [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-47)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1166.8" textLength="305" clip-path="url(#breeze-sbom-update-sbom-information-line-47)">--include-success-outputs</text><text class="breeze-sbom-update-sbom-information-r1" x="353.8" y="1166.8" textLength="841.8" clip-path="url(#breeze-sbom-update-sbom-informatio [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1191.2" textLength="1464" clip-path="url(#breeze-sbom-update-sbom-information-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-update-sbom-information-r1" x="1464" y="1191.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-48)">
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1215.6" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-49)">╭─</text><text class="breeze-sbom-update-sbom-information-r5" x="24.4" y="1215.6" textLength="195.2" clip-path="url(#breeze-sbom-update-sbom-information-line-49)"> Common options </text><text class="breeze-sbom-update-sbom-information-r5" x="219.6" y="1215.6" textLength="1220" clip-path="url(#breeze-sbom-update-sbom-in [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-50)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1240" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-50)">--verbose</text><text class="breeze-sbom-update-sbom-information-r7" x="158.6" y="1240" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-50)">-v</text> [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-51)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1264.4" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-51)">--dry-run</text><text class="breeze-sbom-update-sbom-information-r7" x="158.6" y="1264.4" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-51)">-D< [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-52)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1288.8" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-52)">--answer </text><text class="breeze-sbom-update-sbom-information-r7" x="158.6" y="1288.8" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-information-line-52) [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-53)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="24.4" y="1313.2" textLength="109.8" clip-path="url(#breeze-sbom-update-sbom-information-line-53)">--help   </text><text class="breeze-sbom-update-sbom-information-r7" x="158.6" y="1313.2" textLength="24.4" clip-path="url(#breeze-sbom-update-sbom-informatio [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="1337.6" textLength="1464" clip-path="url(#breeze-sbom-update-sbom-information-line-54)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-update-sbom-information-r1" x="1464" y="1337.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-54)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_sbom_update-sbom-information.txt b/dev/breeze/doc/images/output_sbom_update-sbom-information.txt
index cfdc44468b5..2b562b55d76 100644
--- a/dev/breeze/doc/images/output_sbom_update-sbom-information.txt
+++ b/dev/breeze/doc/images/output_sbom_update-sbom-information.txt
@@ -1 +1 @@
-1c4a91a95b45910314f3596b0a84ac02
+982da75bff2bd15ce0b37e29a3edf11c
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
index b8d41383713..cdde395783d 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -710,7 +710,9 @@ def upgrade(
else:
at_apache_branch = False
console_print(
- "[warning]No apache remote found. The command expects remote pointing to apache/airflow[/]"
+ "[warning]No remote pointing to apache/airflow was found. "
+ "Airflow uses `upstream` for this remote by convention — "
+ "run `git remote add upstream https://github.com/apache/airflow.git` to add it.[/]"
)
# Track whether user chose to reset to target branch
diff --git a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
index f3401b6074f..5175e6e40ce 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
@@ -752,7 +752,16 @@ def prepare_tarball(
@click.option(
"--github-token", help="GitHub token to use in generating issue for testing of release candidate"
)
-@click.option("--remote-name", default="origin", help="Git remote name to push to (default: origin)")
+@click.option(
+ "--remote-name",
+ default="upstream",
+ help=(
+ "Git remote name that tracks apache/airflow and receives release tags / branch pushes "
+ "(default: 'upstream' per the standard remote naming convention — "
+ "see contributing-docs/10_working_with_git.rst). Override if your release clone uses a "
+ "different name (for example 'origin' when you clone apache/airflow directly)."
+ ),
+)
@option_answer
@option_dry_run
@option_verbose
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 5104df663fe..3c329db23e1 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -1354,7 +1354,11 @@ def tag_providers(
release_date: str,
):
found_remote = None
- remotes = ["origin", "apache"]
+ # Standard convention is `upstream` → apache/airflow, `origin` → fork. We keep
+ # `apache` and `origin` in the fallback list so release-manager setups that
+ # predate the convention (origin cloned straight from apache/airflow, or a
+ # remote literally named `apache`) still work.
+ remotes = ["upstream", "origin", "apache"]
for remote in remotes:
try:
result = run_command(
@@ -3572,9 +3576,12 @@ def push_constraints_and_tag(constraints_repo: Path, remote_name: str, airflow_v
@click.option(
"--remote-name",
type=str,
- default="apache",
+ default="upstream",
envvar="REMOTE_NAME",
- help="Name of the remote to push the changes to.",
+ help=(
+ "Name of the remote to push the changes to (default: 'upstream' per the standard "
+ "remote naming convention — see contributing-docs/10_working_with_git.rst)."
+ ),
)
@click.option(
"--airflow-versions",
diff --git a/dev/breeze/src/airflow_breeze/commands/sbom_commands.py b/dev/breeze/src/airflow_breeze/commands/sbom_commands.py
index 2bd4962180d..48313d7f168 100644
--- a/dev/breeze/src/airflow_breeze/commands/sbom_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/sbom_commands.py
@@ -198,11 +198,18 @@ SBOM_INDEX_TEMPLATE = """
)
@click.option(
"--remote-name",
- type=NotVerifiedBetterChoice(["apache", "origin"]),
- default="apache",
+ # ``apache`` is kept in the autocomplete/help list for back-compat during the upstream/origin
+ # standardization; existing setups still work since NotVerifiedBetterChoice accepts any value.
+ type=NotVerifiedBetterChoice(["upstream", "origin", "apache"]),
+ default="upstream",
show_default=True,
envvar="REMOTE_NAME",
- help="Remote name to use when pulling the constraints.",
+ help=(
+ "Remote name to use when pulling the constraints. Defaults to 'upstream' per the "
+ "standard remote naming convention (see contributing-docs/10_working_with_git.rst). "
+ "Use 'origin' if your clone of apache/airflow is set up as origin. 'apache' is still "
+ "accepted for back-compat with legacy clones."
+ ),
)
@click.option(
"--add-stable",
diff --git a/dev/breeze/src/airflow_breeze/utils/github.py b/dev/breeze/src/airflow_breeze/utils/github.py
index 1a6885c57c0..496f0132748 100644
--- a/dev/breeze/src/airflow_breeze/utils/github.py
+++ b/dev/breeze/src/airflow_breeze/utils/github.py
@@ -136,13 +136,14 @@ ACTIVE_TAG_MATCH = re.compile(r"^(\d+)\.\d+\.\d+$")
def get_active_airflow_versions(
- confirm: bool = True, remote_name: str = "apache"
+ confirm: bool = True, remote_name: str = "upstream"
) -> tuple[list[str], dict[str, str]]:
"""
Gets list of active Airflow versions from GitHub.
:param confirm: if True, will ask the user before proceeding with the versions found
- :param remote_name: name of the remote to fetch tags from (e.g., 'apache')
+ :param remote_name: name of the remote to fetch tags from (default: 'upstream' per the
+ project's git remote naming convention)
:return: tuple: list of active Airflow versions and dict of Airflow release dates (in iso format)
"""
from git import GitCommandError, Repo
@@ -158,12 +159,18 @@ def get_active_airflow_versions(
try:
ref_tags = repo.git.ls_remote("--tags", remote_name).splitlines()
except GitCommandError as ex:
- console_print("[error]Could not fetch tags from `apache` remote! Make sure to have it configured.\n")
+ console_print(
+ f"[error]Could not fetch tags from `{remote_name}` remote! Make sure to have it configured.\n"
+ )
console_print(f"{ex}\n")
console_print(
- "[info]You can add apache remote with on of those commands (depend which protocol you use):\n"
- " * git remote add apache https://github.com/apache/airflow.git\n"
- " * git remote add apache git@github.com:apache/airflow.git\n"
+ "[info]Airflow standardises on `upstream` for the apache/airflow remote and `origin` "
+ "for your fork. You can add the upstream remote with one of these commands "
+ "(depending on which protocol you use):\n"
+ " * git remote add upstream https://github.com/apache/airflow.git\n"
+ " * git remote add upstream git@github.com:apache/airflow.git\n"
+ "If you already have it configured under a different name, rename it with "
+ "`git remote rename <old-name> upstream`, or pass `--remote-name <old-name>`.\n"
)
sys.exit(1)
tags = [tag.split("refs/tags/")[1].strip() for tag in ref_tags if "refs/tags/" in tag]