Skip to content

Commit d20239d

Browse files
committed
Falls back to default branch in graph.getMergeBase
(#4443, #4522)
1 parent 980d12a commit d20239d

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/env/node/git/sub-providers/graph.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import {
3030
} from '../../../../git/parsers/logParser';
3131
import type { GitGraphSearch, GitGraphSearchResultData, GitGraphSearchResults } from '../../../../git/search';
3232
import { getSearchQueryComparisonKey, parseSearchQueryCommand } from '../../../../git/search';
33-
import { isBranchStarred } from '../../../../git/utils/-webview/branch.utils';
33+
import { getDefaultBranchName, isBranchStarred } from '../../../../git/utils/-webview/branch.utils';
3434
import { getRemoteIconUri } from '../../../../git/utils/-webview/icons';
3535
import { groupWorktreesByBranch } from '../../../../git/utils/-webview/worktree.utils';
3636
import {
@@ -636,22 +636,22 @@ export class GraphGitSubProvider implements GitGraphSubProvider {
636636
const svc = this.container.git.getRepositoryService(repoPath);
637637

638638
// Get stored merge target configurations
639-
const [storedTargetResult, storedMergeBaseResult] = await Promise.allSettled([
639+
const [targetBranchResult, mergeBaseResult, defaultBranchResult] = await Promise.allSettled([
640640
svc.branches.getStoredMergeTargetBranchName?.(branch.name),
641641
svc.branches.getBaseBranchName?.(branch.name),
642+
getDefaultBranchName(this.container, branch.repoPath, branch.name),
642643
]);
643-
const storedTarget = getSettledValue(storedTargetResult);
644-
const validStoredTarget = storedTarget && storedTarget !== upstreamName ? storedTarget : undefined;
645-
const storedMergeBase = getSettledValue(storedMergeBaseResult);
646-
const validStoredMergeBase =
647-
storedMergeBase && storedMergeBase !== upstreamName ? storedMergeBase : undefined;
644+
const targetBranch = getSettledValue(targetBranchResult);
645+
const validTargetBranch = targetBranch && targetBranch !== upstreamName ? targetBranch : undefined;
646+
const mergeBase = getSettledValue(mergeBaseResult) || getSettledValue(defaultBranchResult);
647+
const validMergeBase = mergeBase && mergeBase !== upstreamName ? mergeBase : undefined;
648648

649649
// Select target with most recent common commit (closest to branch tip)
650-
const validTargets = [validStoredTarget, validStoredMergeBase];
651-
const mergeBase = await this.selectMostRecentMergeBase(branch.name, validTargets, svc);
650+
const validTargets = [validTargetBranch, validMergeBase];
651+
const recentMergeBase = await this.selectMostRecentMergeBase(branch.name, validTargets, svc);
652652

653-
const isRecomposable = Boolean(mergeBase && mergeBase.commit !== branch.sha);
654-
return isRecomposable ? mergeBase : undefined;
653+
const isRecomposable = Boolean(recentMergeBase && recentMergeBase.commit !== branch.sha);
654+
return isRecomposable ? recentMergeBase : undefined;
655655
} catch {
656656
// If we can't determine, assume not recomposable
657657
return undefined;

0 commit comments

Comments
 (0)