Merge pull request #2610 from gsd-build/refine/dedup-merge-cleanup

refactor: extract merge-state cleanup helper in reconcileMergeState
This commit is contained in:
TÂCHES 2026-03-25 23:00:46 -06:00 committed by GitHub
commit 53a3388d89

View file

@ -430,6 +430,35 @@ export function writeBlockerPlaceholder(
// ─── Merge State Reconciliation ───────────────────────────────────────────────
/**
* Best-effort abort of a pending merge/squash and hard-reset to HEAD.
* Handles both real merges (MERGE_HEAD) and squash merges (SQUASH_MSG).
*/
function abortAndResetMerge(
basePath: string,
hasMergeHead: boolean,
squashMsgPath: string,
): void {
if (hasMergeHead) {
try {
nativeMergeAbort(basePath);
} catch {
/* best-effort */
}
} else if (squashMsgPath) {
try {
unlinkSync(squashMsgPath);
} catch {
/* best-effort */
}
}
try {
nativeResetHard(basePath);
} catch {
/* best-effort */
}
}
/**
* Detect leftover merge state from a prior session and reconcile it.
* If MERGE_HEAD or SQUASH_MSG exists, check whether conflicts are resolved.
@ -486,24 +515,7 @@ export function reconcileMergeState(
}
}
if (!resolved) {
if (hasMergeHead) {
try {
nativeMergeAbort(basePath);
} catch {
/* best-effort */
}
} else if (hasSquashMsg) {
try {
unlinkSync(squashMsgPath);
} catch {
/* best-effort */
}
}
try {
nativeResetHard(basePath);
} catch {
/* best-effort */
}
abortAndResetMerge(basePath, hasMergeHead, squashMsgPath);
ctx.ui.notify(
"Detected leftover merge state — auto-resolve failed, cleaned up. Re-deriving state.",
"warning",
@ -511,24 +523,7 @@ export function reconcileMergeState(
}
} else {
// Code conflicts present — abort and reset
if (hasMergeHead) {
try {
nativeMergeAbort(basePath);
} catch {
/* best-effort */
}
} else if (hasSquashMsg) {
try {
unlinkSync(squashMsgPath);
} catch {
/* best-effort */
}
}
try {
nativeResetHard(basePath);
} catch {
/* best-effort */
}
abortAndResetMerge(basePath, hasMergeHead, squashMsgPath);
ctx.ui.notify(
"Detected leftover merge state with unresolved conflicts — cleaned up. Re-deriving state.",
"warning",