diff --git a/.mergify.yml b/.mergify.yml index f374d77..f804b85 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -59,4 +59,4 @@ merge_protections: merge_protections_settings: reporting_method: deployments - auto_merge: true + auto_merge_conditions: true diff --git a/src/__tests__/mergify.test.js b/src/__tests__/mergify.test.js index 21068bb..edda624 100644 --- a/src/__tests__/mergify.test.js +++ b/src/__tests__/mergify.test.js @@ -2251,6 +2251,26 @@ describe("buildStackNav", () => { el.querySelector('[data-mergify-stack-nav="next-empty"]'), ).not.toBeNull(); }); + + it("preserves the current subpath in prev/next links", () => { + const stack = stackOf(pull(1), pull(2, { is_current: true }), pull(3)); + const el = buildStackNav(stack, { + org: "o", + repo: "r", + number: 2, + subpath: "changes", + }); + expect( + el + .querySelector('[data-mergify-stack-nav="prev"]') + .getAttribute("href"), + ).toBe("/o/r/pull/1/changes"); + expect( + el + .querySelector('[data-mergify-stack-nav="next"]') + .getAttribute("href"), + ).toBe("/o/r/pull/3/changes"); + }); }); describe("injectStackNav", () => { diff --git a/src/mergify.js b/src/mergify.js index 56c67e4..f575d75 100644 --- a/src/mergify.js +++ b/src/mergify.js @@ -504,6 +504,7 @@ function getPullRequestData() { org: parts[1], repo: parts[2], pull: parts[4], + subpath: parts[5] || "", }; } @@ -832,6 +833,7 @@ async function _tryInject() { org: _data.org, repo: _data.repo, number: Number.parseInt(_data.pull, 10), + subpath: _data.subpath, }); const existingRow = document.querySelector("#mergify"); @@ -1704,7 +1706,8 @@ function buildStackNav(stackData, currentPull) { const a = document.createElement("a"); a.setAttribute("data-mergify-stack-nav", direction); a.setAttribute("data-mergify-stack-nav-num", String(pull.number)); - a.href = `/${currentPull.org}/${currentPull.repo}/pull/${pull.number}`; + const tail = currentPull.subpath ? `/${currentPull.subpath}` : ""; + a.href = `/${currentPull.org}/${currentPull.repo}/pull/${pull.number}${tail}`; a.title = `Open #${pull.number}: ${pull.title}`; a.style.cssText = "display:flex;align-items:center;gap:6px;" +