From 38cd156730b4cb5dbcab5f29df2435aa38e06811 Mon Sep 17 00:00:00 2001 From: Wiktor Kwapisiewicz Date: Tue, 18 Feb 2025 12:26:43 +0100 Subject: [PATCH] Ask git to checkout a submodule even if it is skipped in `.gitmodules` Setting a submodule as `update = none` is a common way to make cargo skip the submodule. Unfortunately this makes `actions/checkout` skip the submodule too, even if it's configured to fetch submodules. This patch adds an option that is a default in git but causes the submodules to be available even if skipped otherwise. See: https://github.com/actions/checkout/issues/915 See: https://github.com/rust-lang/cargo/issues/4247#issuecomment-1149178736 See: https://git-scm.com/docs/git-submodule#Documentation/git-submodule.txt---checkout --- dist/index.js | 2 +- src/git-command-manager.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index b0db713..87d720d 100644 --- a/dist/index.js +++ b/dist/index.js @@ -796,7 +796,7 @@ class GitCommandManager { submoduleUpdate(fetchDepth, recursive) { return __awaiter(this, void 0, void 0, function* () { const args = ['-c', 'protocol.version=2']; - args.push('submodule', 'update', '--init', '--force'); + args.push('submodule', 'update', '--init', '--force', '--checkout'); if (fetchDepth > 0) { args.push(`--depth=${fetchDepth}`); } diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index 8e42a38..a2a3bda 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -411,7 +411,7 @@ class GitCommandManager { async submoduleUpdate(fetchDepth: number, recursive: boolean): Promise { const args = ['-c', 'protocol.version=2'] - args.push('submodule', 'update', '--init', '--force') + args.push('submodule', 'update', '--init', '--force', '--checkout') if (fetchDepth > 0) { args.push(`--depth=${fetchDepth}`) }