From 96c65894942921d85edebc65cf03fafa1c057023 Mon Sep 17 00:00:00 2001 From: eric sciple Date: Tue, 14 Oct 2025 23:56:34 +0000 Subject: [PATCH] Fix submodule git directory paths for includeIf --- dist/index.js | 15 +++++++-------- src/git-auth-helper.ts | 21 ++++++++------------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/dist/index.js b/dist/index.js index d95cb13..55e003a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -289,16 +289,15 @@ class GitAuthHelper { // For each submodule, configure includeIf entries pointing to the shared credentials file. // Configure both host and container paths to support Docker container actions. for (const configPath of configPaths) { - // Submodule path - const submodulePath = path.dirname(path.dirname(configPath)); + // The config file is at .git/modules/submodule-name/config + let submoduleConfigDir = path.dirname(configPath); + submoduleConfigDir = submoduleConfigDir.replace(/\\/g, '/'); // Use forward slashes, even on Windows // Configure host includeIf - let submoduleGitDir = path.join(submodulePath, '.git'); - submoduleGitDir = submoduleGitDir.replace(/\\/g, '/'); // Use forward slashes, even on Windows - yield this.git.config(`includeIf.gitdir:${submoduleGitDir}.path`, credentialsConfigPath, false, false, configPath); + yield this.git.config(`includeIf.gitdir:${submoduleConfigDir}.path`, credentialsConfigPath, false, false, configPath); // Configure container includeIf - let submoduleRelativePath = path.relative(workingDirectory, submodulePath); - submoduleRelativePath = submoduleRelativePath.replace(/\\/g, '/'); // Use forward slashes, even on Windows - const containerSubmoduleGitDir = path.posix.join(containerRepoPath, submoduleRelativePath, '.git'); + let relativeSubmoduleConfigDir = path.relative(githubWorkspace, submoduleConfigDir); + relativeSubmoduleConfigDir = relativeSubmoduleConfigDir.replace(/\\/g, '/'); // Use forward slashes, even on Windows + const containerSubmoduleGitDir = path.posix.join('/github/workspace', relativeSubmoduleConfigDir); yield this.git.config(`includeIf.gitdir:${containerSubmoduleGitDir}.path`, containerCredentialsPath, false, false, configPath); } if (this.settings.sshKey) { diff --git a/src/git-auth-helper.ts b/src/git-auth-helper.ts index 6cf4ab1..1b16fba 100644 --- a/src/git-auth-helper.ts +++ b/src/git-auth-helper.ts @@ -205,14 +205,13 @@ class GitAuthHelper { // For each submodule, configure includeIf entries pointing to the shared credentials file. // Configure both host and container paths to support Docker container actions. for (const configPath of configPaths) { - // Submodule path - const submodulePath = path.dirname(path.dirname(configPath)) + // The config file is at .git/modules/submodule-name/config + let submoduleConfigDir = path.dirname(configPath) + submoduleConfigDir = submoduleConfigDir.replace(/\\/g, '/') // Use forward slashes, even on Windows // Configure host includeIf - let submoduleGitDir = path.join(submodulePath, '.git') - submoduleGitDir = submoduleGitDir.replace(/\\/g, '/') // Use forward slashes, even on Windows await this.git.config( - `includeIf.gitdir:${submoduleGitDir}.path`, + `includeIf.gitdir:${submoduleConfigDir}.path`, credentialsConfigPath, false, false, @@ -220,15 +219,11 @@ class GitAuthHelper { ) // Configure container includeIf - let submoduleRelativePath = path.relative( - workingDirectory, - submodulePath - ) - submoduleRelativePath = submoduleRelativePath.replace(/\\/g, '/') // Use forward slashes, even on Windows + let relativeSubmoduleConfigDir = path.relative(githubWorkspace, submoduleConfigDir) + relativeSubmoduleConfigDir = relativeSubmoduleConfigDir.replace(/\\/g, '/') // Use forward slashes, even on Windows const containerSubmoduleGitDir = path.posix.join( - containerRepoPath, - submoduleRelativePath, - '.git' + '/github/workspace', + relativeSubmoduleConfigDir ) await this.git.config( `includeIf.gitdir:${containerSubmoduleGitDir}.path`,