Use GitHub API for pushes by default and require explicit github-token when using custom tokens (#692)

* Ensure `github-token` wins for `git-cli` pushes

* more shenanigans

* Default to GitHub API commit mode

* e2e auth tests

* push missing utils

* rename input

* refactor

* refactor

* refactor

* refactor

* refactor

* refactor

* reuse helpers

* refactor

* refactor

* simplify

* add tests

* refactor

* improve comments

* shift helper

* add comments

* extract test helpers

* update docs and changesets

* update one thing
This commit is contained in:
Mateusz Burzyński
2026-08-03 11:02:31 +00:00
committed by GitHub
parent 50de20a107
commit cb3f0110d7
20 changed files with 766 additions and 129 deletions
+1 -16
View File
@@ -5,6 +5,7 @@ import path from "node:path";
import type * as github from "@actions/github";
import { isRepoShallow } from "@changesets/git";
import { exec } from "tinyexec";
import { moveDisposable, type WithAsyncDispose } from "../utils.ts";
type PullRequestContext = NonNullable<
typeof github.context.payload.pull_request
@@ -122,22 +123,6 @@ async function tempWorktree(cwd: string, dir: string, ref: Ref) {
};
}
type WithAsyncDispose<T> = T & {
[Symbol.asyncDispose](): Promise<void>;
};
function moveDisposable<T extends object>(
stack: AsyncDisposableStack,
value: T,
): WithAsyncDispose<T> {
const moved = stack.move();
return Object.assign(value, {
async [Symbol.asyncDispose]() {
await moved.disposeAsync();
},
});
}
export async function getPullRequestWorktree(
context: PullRequestContext,
cwd: string = process.cwd(),