From 0a822557f3b94444597d4484e41f92aa2b2c0cb7 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 3 Nov 2025 14:59:38 -0500 Subject: [PATCH 1/3] [tool] Remove use of FETCH_HEAD Changes the default branch used to find merge bases from `FETCH_HEAD` to `main`. We were arranging for it to be `main` in CI, and locally it was an unpredictable value, so just hard-coding to `main` is likely to give better behavior locally with no change to CI behavior. Fixes https://github.com/flutter/flutter/issues/176738 --- .ci/scripts/prepare_tool.sh | 3 --- script/tool/lib/src/common/git_version_finder.dart | 2 +- script/tool/lib/src/common/package_command.dart | 2 +- script/tool/test/common/git_version_finder_test.dart | 2 +- script/tool/test/version_check_command_test.dart | 2 +- 5 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.ci/scripts/prepare_tool.sh b/.ci/scripts/prepare_tool.sh index 17f993454e2..eec594032cc 100755 --- a/.ci/scripts/prepare_tool.sh +++ b/.ci/scripts/prepare_tool.sh @@ -4,8 +4,5 @@ # found in the LICENSE file. set -e -# To set FETCH_HEAD for "git merge-base" to work -git fetch origin main - cd script/tool dart pub get diff --git a/script/tool/lib/src/common/git_version_finder.dart b/script/tool/lib/src/common/git_version_finder.dart index fd79abdc114..fef25af26a5 100644 --- a/script/tool/lib/src/common/git_version_finder.dart +++ b/script/tool/lib/src/common/git_version_finder.dart @@ -15,7 +15,7 @@ class GitVersionFinder { : assert(baseSha == null || baseBranch == null, 'At most one of baseSha and baseBranch can be provided'), _baseSha = baseSha, - _baseBranch = baseBranch ?? 'FETCH_HEAD'; + _baseBranch = baseBranch ?? 'main'; /// The top level directory of the git repo. /// diff --git a/script/tool/lib/src/common/package_command.dart b/script/tool/lib/src/common/package_command.dart index 6b269a279a0..d48e4a539fb 100644 --- a/script/tool/lib/src/common/package_command.dart +++ b/script/tool/lib/src/common/package_command.dart @@ -129,7 +129,7 @@ abstract class PackageCommand extends Command { argParser.addOption(_baseBranchArg, help: 'The base branch whose merge base is used as the base SHA if ' '--$_baseShaArg is not provided. \n' - 'If not specified, FETCH_HEAD is used as the base branch.'); + 'If not specified, "main" is used as the base branch.'); argParser.addFlag(_logTimingArg, help: 'Logs timing information.\n\n' 'Currently only logs per-package timing for multi-package commands, ' diff --git a/script/tool/test/common/git_version_finder_test.dart b/script/tool/test/common/git_version_finder_test.dart index b228330c291..34912820438 100644 --- a/script/tool/test/common/git_version_finder_test.dart +++ b/script/tool/test/common/git_version_finder_test.dart @@ -66,7 +66,7 @@ file2/file2.cc final GitVersionFinder finder = GitVersionFinder(gitDir); await finder.getChangedFiles(); verify(gitDir.runCommand( - ['merge-base', '--fork-point', 'FETCH_HEAD', 'HEAD'], + ['merge-base', '--fork-point', 'main', 'HEAD'], throwOnError: false)); verify(gitDir.runCommand( ['diff', '--name-only', mergeBaseResponse, 'HEAD'])); diff --git a/script/tool/test/version_check_command_test.dart b/script/tool/test/version_check_command_test.dart index 4c852bb110d..d23b7535fda 100644 --- a/script/tool/test/version_check_command_test.dart +++ b/script/tool/test/version_check_command_test.dart @@ -150,7 +150,7 @@ void main() { gitProcessRunner.recordedCalls, containsAllInOrder(const [ ProcessCall('git-merge-base', - ['--fork-point', 'FETCH_HEAD', 'HEAD'], null), + ['--fork-point', 'main', 'HEAD'], null), ProcessCall('git-show', ['abc123:packages/plugin/pubspec.yaml'], null), ])); From 8048f2f6f4a9cd38800d4af14e5fbc75814870e6 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 3 Nov 2025 21:39:17 -0500 Subject: [PATCH 2/3] Re-add fetch of main --- .ci/scripts/prepare_tool.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.ci/scripts/prepare_tool.sh b/.ci/scripts/prepare_tool.sh index eec594032cc..6b9119d2909 100755 --- a/.ci/scripts/prepare_tool.sh +++ b/.ci/scripts/prepare_tool.sh @@ -4,5 +4,8 @@ # found in the LICENSE file. set -e +# Ensure that 'main' is present for diffing. +git fetch origin main + cd script/tool dart pub get From fd930ecd999cb4014ad7fd54986799dee4c668f6 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 3 Nov 2025 21:50:42 -0500 Subject: [PATCH 3/3] Create main --- .ci/scripts/prepare_tool.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/scripts/prepare_tool.sh b/.ci/scripts/prepare_tool.sh index 6b9119d2909..33646d56e7c 100755 --- a/.ci/scripts/prepare_tool.sh +++ b/.ci/scripts/prepare_tool.sh @@ -6,6 +6,7 @@ set -e # Ensure that 'main' is present for diffing. git fetch origin main +git branch main origin/main cd script/tool dart pub get