diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index d92e59455077e3119d586500a4525e742e9bdf96..a8593e5622958a119e3749068e610fc440a8e970 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -242,6 +242,7 @@ export async function initRepo(args: StorageConfig): Promise<void> { config.ignoredAuthors = []; config.additionalBranches = []; config.branchIsModified = {}; + config.commitBranches = {}; const { localDir } = GlobalConfig.get(); git = simpleGit(localDir, simpleGitConfig()).env({ ...process.env, @@ -587,13 +588,16 @@ export async function isBranchBehindBase( await syncGit(); try { const { currentBranchSha, currentBranch } = config; - const branches = await git.branch([ - '--remotes', - '--verbose', - '--contains', - config.currentBranchSha, - ]); - isBehind = !branches.all.map(localName).includes(branchName); + config.commitBranches[config.currentBranchSha] ??= ( + await git.branch([ + '--remotes', + '--verbose', + '--contains', + config.currentBranchSha, + ]) + ).all.map(localName); + isBehind = + !config.commitBranches[config.currentBranchSha].includes(branchName); logger.debug( { currentBranch, currentBranchSha }, `branch.isBehindBase(): ${isBehind}` diff --git a/lib/util/git/types.ts b/lib/util/git/types.ts index ef0e18e86c874428ec6166d50fbe84e559fbbaa7..bacf172951c0dc73776c17258431c9ee5deb5138 100644 --- a/lib/util/git/types.ts +++ b/lib/util/git/types.ts @@ -25,6 +25,7 @@ export interface LocalConfig extends StorageConfig { currentBranchSha: string; branchCommits: Record<string, CommitSha>; branchIsModified: Record<string, boolean>; + commitBranches: Record<string, string[]>; ignoredAuthors: string[]; gitAuthorName?: string | null; gitAuthorEmail?: string;