@tablation/crew 0.54.2 → 0.54.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +13 -2
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -10507,7 +10507,7 @@ var isolateCap = (o) => o.repo.release.isolateFailures?.maxCandidates ?? DEFAULT
|
|
|
10507
10507
|
async function isolateAndRetry(o, name, output, merged, preMerge, decision, fresh, releaseBranch) {
|
|
10508
10508
|
const applied = merged.filter((c) => c.sha && c.branch);
|
|
10509
10509
|
const cap = isolateCap(o);
|
|
10510
|
-
if (o.dryRun || !preMerge || applied.length <
|
|
10510
|
+
if (o.dryRun || !preMerge || applied.length < 1 || cap === 0) return null;
|
|
10511
10511
|
const head = headSha(o.cwd);
|
|
10512
10512
|
const withFiles = applied.map((c) => ({
|
|
10513
10513
|
c,
|
|
@@ -10520,6 +10520,17 @@ async function isolateAndRetry(o, name, output, merged, preMerge, decision, fres
|
|
|
10520
10520
|
if (byFile) {
|
|
10521
10521
|
o.emit.warn(`${name} failed; its output names files only ${byFile.c.branch} changed \u2014 treating it as the culprit`, { ticket: byFile.c.ticket.issue_id });
|
|
10522
10522
|
culprits.push({ c: byFile.c, how: "files", tail: lastLines(output, HOOK_FAILURE_TAIL_LINES) });
|
|
10523
|
+
} else if (applied.length === 1) {
|
|
10524
|
+
const only = applied[0];
|
|
10525
|
+
gitOk(o.cwd, ["reset", "--hard", preMerge]);
|
|
10526
|
+
const baseRun = await hook(o, name);
|
|
10527
|
+
if (baseRun && baseRun.code !== 0) {
|
|
10528
|
+
o.emit.warn(`${name} fails on the base without ${only.branch} \u2014 not blaming the branch`, { ticket: only.ticket.issue_id });
|
|
10529
|
+
gitOk(o.cwd, ["reset", "--hard", head]);
|
|
10530
|
+
return null;
|
|
10531
|
+
}
|
|
10532
|
+
o.emit.warn(`${name} failed with only ${only.branch} merged and passes without it \u2014 treating it as the culprit`, { ticket: only.ticket.issue_id });
|
|
10533
|
+
culprits.push({ c: only, how: "solo", tail: lastLines(output, HOOK_FAILURE_TAIL_LINES) });
|
|
10523
10534
|
} else if (applied.length > cap) {
|
|
10524
10535
|
o.emit.warn(`${name} failed with ${applied.length} branches merged, over release.isolateFailures.maxCandidates (${cap}) \u2014 not isolating`);
|
|
10525
10536
|
return null;
|
|
@@ -10708,7 +10719,7 @@ async function mergeAndRelease(o, decision, fresh, releaseBranch, isolated = fal
|
|
|
10708
10719
|
if (o.repo.hooks.build) {
|
|
10709
10720
|
if (o.dryRun) {
|
|
10710
10721
|
o.emit.emit(`would run: ${hookLabel(o.repo, "build")}`);
|
|
10711
|
-
if (applied
|
|
10722
|
+
if (applied >= 1) {
|
|
10712
10723
|
o.emit.emit(
|
|
10713
10724
|
`if it fails, would find the one of ${applied} merged branches that broke it (by the files it names, else by building each alone, up to ${isolateCap(o)}), hand that back to the dev lane and ship the rest`
|
|
10714
10725
|
);
|
package/package.json
CHANGED