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 1d038528e87 Allow skipping the git fetch when preparing provider 
distributions (#71304)
1d038528e87 is described below

commit 1d038528e871935781022adbfd2e2edd9169014f
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Aug 19 16:10:39 2026 +0200

    Allow skipping the git fetch when preparing provider distributions (#71304)
    
    Building a wave in batches re-fetches the full history and every tag from
    apache/airflow on each invocation. That is slow, and on an unreliable
    network it is the step most likely to fail and take a whole batch of
    providers down with it - even though the tags fetched moments earlier are
    still current. `classify-provider-changes` and
    `prepare-provider-documentation` already offer this escape hatch; the
    tag check itself stays on.
---
 ...e-management_prepare-provider-distributions.svg | 50 ++++++++++++++--------
 ...e-management_prepare-provider-distributions.txt |  2 +-
 .../commands/release_management_commands.py        | 11 ++++-
 .../commands/release_management_commands_config.py |  1 +
 .../tests/test_release_management_commands.py      | 47 ++++++++++++++++++++
 5 files changed, 92 insertions(+), 19 deletions(-)

diff --git 
a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
 
b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
index 27a1d92de9a..eda0dd2e315 100644
--- 
a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
+++ 
b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1123.6" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 1221.1999999999998" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath 
id="breeze-release-management-prepare-provider-distributions-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1072.6" />
+      <rect x="0" y="0" width="1463.0" height="1170.1999999999998" />
     </clipPath>
     <clipPath 
id="breeze-release-management-prepare-provider-distributions-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -174,9 +174,21 @@
 <clipPath 
id="breeze-release-management-prepare-provider-distributions-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath 
id="breeze-release-management-prepare-provider-distributions-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath 
id="breeze-release-management-prepare-provider-distributions-line-44">
+    <rect x="0" y="1075.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath 
id="breeze-release-management-prepare-provider-distributions-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath 
id="breeze-release-management-prepare-provider-distributions-line-46">
+    <rect x="0" y="1123.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="1121.6" rx="8"/><text 
class="breeze-release-management-prepare-provider-distributions-title" 
fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;prepare-provider-distributions</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="1219.2" rx="8"/><text 
class="breeze-release-management-prepare-provider-distributions-title" 
fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;prepare-provider-distributions</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -216,20 +228,24 @@
 </text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="678.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-27)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="678.8" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-27)">--distributions-list-file&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-rel [...]
 </text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="703.2" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-28)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="703.2" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-28)">--skip-deleting-generated-files</text><text
 class="breeze-release-management-prepare-provid [...]
 </text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="727.6" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-29)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="727.6" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-29)">debugging&#160;and&#160;developing&#160;changes&#160;to&#160;the&#160;build&#160;process.&
 [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="752" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="752" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">--skip-tag-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="776.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="776.4" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">--version-suffix&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="800.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="800.8" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">.post1,&#160;.post2&#160;etc.).&#160;Note&#160;the&#160;`.`&#160;is&#160;need&#160;in&#160
 [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="825.2" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="825.2" textLength="353.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">followed&#160;with&#160;+local_version&#160;</text><text
 class="breeze-release-management- [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="849.6" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="849.6" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">--distributions-list&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tex
 [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="874" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="874" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">documentation&#160;building,&#160;and&#160;document&#160;publishing.&#160;It&#160;is&#160;an&#
 [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="898.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-36)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="898.4" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-36)">adding&#160;individual&#160;packages&#160;as&#160;arguments&#160;to&#160;every&#160;comman
 [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="922.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-37)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="922.8" textLength="366" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-37)">packages&#160;passed&#160;as&#160;arguments.&#160;</text><text
 class="breeze-release-managem [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="947.2" textLength="1464" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="1464" 
y="947.2" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provid [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="971.6" textLength="24.4" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-39)">╭─</text><text
 class="breeze-release-management-prepare-provider-distributions-r6" x="24.4" 
y="971.6" textLength="195.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-39)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-prepare-provi [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="996" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-40)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="996" textLength="109.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-40)">--dry-run</text><text
 class="breeze-release-management-prepare-provider-distributions-r5" x="15 [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1020.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-41)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="1020.4" textLength="109.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-41)">--verbose</text><text
 class="breeze-release-management-prepare-provider-distributions-r5" [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1044.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-42)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="1044.8" textLength="109.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-42)">--help&#160;&#160;&#160;</text><text
 class="breeze-release-management-prepare-provider-di [...]
-</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1069.2" textLength="1464" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="1464" 
y="1069.2" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-prov [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="752" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="752" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">--skip-git-fetch&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="776.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="776.4" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">tags&#160;against&#160;the&#160;state&#160;already&#160;in&#160;the&#160;local&#160;reposi
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="800.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="800.8" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">several&#160;batches&#160;in&#160;a&#160;row&#160;-&#160;the&#160;fetch&#160;pulls&#160;th
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="825.2" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="825.2" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">is&#160;slow&#160;and&#160;flaky&#160;on&#160;an&#160;unreliable&#160;network.&#160;&#160;
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="849.6" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="849.6" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">--skip-tag-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="874" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="874" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">--version-suffix&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="898.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-36)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="898.4" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-36)">.post1,&#160;.post2&#160;etc.).&#160;Note&#160;the&#160;`.`&#160;is&#160;need&#160;in&#160
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="922.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-37)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="922.8" textLength="353.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-37)">followed&#160;with&#160;+local_version&#160;</text><text
 class="breeze-release-management- [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="947.2" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-38)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="947.2" textLength="378.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-38)">--distributions-list&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tex
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="971.6" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-39)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="971.6" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-39)">documentation&#160;building,&#160;and&#160;document&#160;publishing.&#160;It&#160;is&#160;
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="996" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-40)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="996" textLength="963.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-40)">adding&#160;individual&#160;packages&#160;as&#160;arguments&#160;to&#160;every&#160;command.&#
 [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1020.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-41)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" 
y="1020.4" textLength="366" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-41)">packages&#160;passed&#160;as&#160;arguments.&#160;</text><text
 class="breeze-release-manag [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1044.8" textLength="1464" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-42)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="1464" 
y="1044.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-prov [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1069.2" textLength="24.4" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-43)">╭─</text><text
 class="breeze-release-management-prepare-provider-distributions-r6" x="24.4" 
y="1069.2" textLength="195.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-43)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-prepare-pro [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1093.6" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-44)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="1093.6" textLength="109.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-44)">--dry-run</text><text
 class="breeze-release-management-prepare-provider-distributions-r5" [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1118" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-45)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="1118" textLength="109.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-45)">--verbose</text><text
 class="breeze-release-management-prepare-provider-distributions-r5" x=" [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1142.4" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-46)">│</text><text
 class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" 
y="1142.4" textLength="109.8" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-46)">--help&#160;&#160;&#160;</text><text
 class="breeze-release-management-prepare-provider-di [...]
+</text><text 
class="breeze-release-management-prepare-provider-distributions-r6" x="0" 
y="1166.8" textLength="1464" 
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-prepare-provider-distributions-r1" x="1464" 
y="1166.8" textLength="12.2" 
clip-path="url(#breeze-release-management-prepare-prov [...]
 </text>
     </g>
     </g>
diff --git 
a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
 
b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
index f054c03806e..f462d0ecff8 100644
--- 
a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
+++ 
b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
@@ -1 +1 @@
-a27c1726f5902e5fdb501ecdee226476
+4b8e22ad991a4fed63956c9563f2fb30
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 311f5d886eb..cd97b725104 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -1253,6 +1253,14 @@ def _build_provider_distributions(
     is_flag=True,
     help="Skip checking if the tag already exists in the remote repository",
 )
[email protected](
+    "--skip-git-fetch",
+    default=False,
+    is_flag=True,
+    help="Skip recreating and fetching the 'apache-https-for-providers' 
remote, and check tags against "
+    "the state already in the local repository. Useful when building several 
batches in a row - the "
+    "fetch pulls the full history and all tags, which is slow and flaky on an 
unreliable network.",
+)
 @click.option(
     "--skip-deleting-generated-files",
     default=False,
@@ -1291,6 +1299,7 @@ def prepare_provider_distributions(
     distributions_list_file: IO | None,
     provider_distributions: tuple[str, ...],
     skip_deleting_generated_files: bool,
+    skip_git_fetch: bool,
     skip_tag_check: bool,
     version_suffix: str,
 ):
@@ -1325,7 +1334,7 @@ def prepare_provider_distributions(
         include_removed=include_removed_providers,
         include_not_ready=include_not_ready_providers,
     )
-    if not skip_tag_check and not is_local_package_version(version_suffix):
+    if not skip_tag_check and not is_local_package_version(version_suffix) and 
not skip_git_fetch:
         run_command(["git", "remote", "rm", "apache-https-for-providers"], 
check=False, stderr=DEVNULL)
         
make_sure_remote_apache_exists_and_fetch(github_repository=github_repository)
     success_packages = []
diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
index ac59513cdfb..fdca9db46e6 100644
--- 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
+++ 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
@@ -253,6 +253,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str 
| list[str]]]] = {
                 "--distribution-format",
                 "--distributions-list-file",
                 "--skip-deleting-generated-files",
+                "--skip-git-fetch",
                 "--skip-tag-check",
                 "--version-suffix",
                 "--distributions-list",
diff --git a/dev/breeze/tests/test_release_management_commands.py 
b/dev/breeze/tests/test_release_management_commands.py
index 0e0d3d64843..2be5223e302 100644
--- a/dev/breeze/tests/test_release_management_commands.py
+++ b/dev/breeze/tests/test_release_management_commands.py
@@ -333,3 +333,50 @@ def 
test_get_package_version_possibly_from_stable_txt_for_ts_sdk(
 )
 def test_issue_match_in_body(body: str, expected: list[int]):
     assert [int(m.group(1)) for m in ISSUE_MATCH_IN_BODY.finditer(body)] == 
expected
+
+
[email protected](
+    ("skip_git_fetch", "expected_fetches"),
+    [
+        pytest.param(False, 1, id="fetch-by-default"),
+        pytest.param(True, 0, id="skipped-when-requested"),
+    ],
+)
+def test_prepare_provider_distributions_skip_git_fetch(
+    monkeypatch, tmp_path, skip_git_fetch, expected_fetches
+):
+    fetches = []
+    monkeypatch.setattr(
+        release_management_commands,
+        "make_sure_remote_apache_exists_and_fetch",
+        lambda **kwargs: fetches.append(kwargs),
+    )
+    for name in (
+        "perform_environment_checks",
+        "check_flit_worktree_compatibility",
+        "fix_ownership_using_docker",
+        "cleanup_python_generated_files",
+        "run_command",
+    ):
+        monkeypatch.setattr(release_management_commands, name, lambda *args, 
**kwargs: None)
+    monkeypatch.setattr(release_management_commands, "AIRFLOW_ROOT_PATH", 
tmp_path)
+    monkeypatch.setattr(release_management_commands, 
"get_packages_list_to_act_on", lambda **kwargs: [])
+
+    with pytest.raises(SystemExit) as exc_info:
+        release_management_commands.prepare_provider_distributions.callback(
+            clean_dist=False,
+            distributions_list="",
+            github_repository="apache/airflow",
+            include_not_ready_providers=False,
+            include_removed_providers=False,
+            distribution_format="wheel",
+            distributions_list_file=None,
+            provider_distributions=(),
+            skip_deleting_generated_files=False,
+            skip_git_fetch=skip_git_fetch,
+            skip_tag_check=False,
+            version_suffix="",
+        )
+
+    assert exc_info.value.code == 0
+    assert len(fetches) == expected_fetches

Reply via email to