Fix git action priorities (#1488)

This commit is contained in:
Mohamed Boudra
2026-06-12 21:57:35 +08:00
committed by GitHub
parent 736b2da1a2
commit 85fa38bdde
8 changed files with 71 additions and 52 deletions
+32 -13
View File
@@ -190,6 +190,25 @@ describe("git-actions-policy", () => {
}); });
}); });
it("prioritizes push over pull request merge when local commits are unpushed", () => {
const actions = buildGitActions(
createInput({
hasRemote: true,
isOnBaseBranch: false,
aheadCount: 2,
aheadOfOrigin: 2,
hasPullRequest: true,
pullRequestUrl: "https://example.com/pr/456",
pullRequestState: "open",
pullRequestMergeable: "MERGEABLE",
pullRequestGithub: githubStatus(),
shipDefault: "pr",
}),
);
expect(actions.primary).toMatchObject({ id: "push", label: "Push" });
});
it("shows update-from-base only on feature branches that are behind the base branch", () => { it("shows update-from-base only on feature branches that are behind the base branch", () => {
const actions = buildGitActions( const actions = buildGitActions(
createInput({ createInput({
@@ -358,7 +377,7 @@ describe("git-actions-policy", () => {
expect(actions.primary).toMatchObject({ expect(actions.primary).toMatchObject({
id: "merge-pr-squash", id: "merge-pr-squash",
label: "Squash and merge", label: "Merge",
}); });
}); });
@@ -379,7 +398,7 @@ describe("git-actions-policy", () => {
expect(actions.primary).toMatchObject({ expect(actions.primary).toMatchObject({
id: "merge-pr-squash", id: "merge-pr-squash",
label: "Squash and merge", label: "Merge",
}); });
}); });
@@ -439,11 +458,11 @@ describe("git-actions-policy", () => {
expect(actions.primary).toMatchObject({ expect(actions.primary).toMatchObject({
id: "merge-pr-squash", id: "merge-pr-squash",
label: "Squash and merge", label: "Merge",
}); });
}); });
it("promotes Create PR over push and local merge when PR is the ship default", () => { it("promotes push over Create PR when local commits are unpushed", () => {
const actions = buildGitActions( const actions = buildGitActions(
createInput({ createInput({
hasRemote: true, hasRemote: true,
@@ -455,8 +474,8 @@ describe("git-actions-policy", () => {
); );
expect(actions.primary).toMatchObject({ expect(actions.primary).toMatchObject({
id: "pr", id: "push",
label: "Create PR", label: "Push",
}); });
}); });
@@ -493,7 +512,7 @@ describe("git-actions-policy", () => {
expect(actions.primary).toMatchObject({ expect(actions.primary).toMatchObject({
id: "merge-pr-squash", id: "merge-pr-squash",
label: "Squash and merge", label: "Merge",
}); });
expect(actions.secondary.some((action) => action.id === "merge-branch")).toBe(true); expect(actions.secondary.some((action) => action.id === "merge-branch")).toBe(true);
}); });
@@ -564,7 +583,7 @@ describe("git-actions-policy", () => {
}, },
{ {
id: "merge-pr-squash", id: "merge-pr-squash",
label: "Squash and merge", label: "Merge",
pendingLabel: "Merging PR...", pendingLabel: "Merging PR...",
successLabel: "PR merged", successLabel: "PR merged",
disabled: false, disabled: false,
@@ -573,7 +592,7 @@ describe("git-actions-policy", () => {
}, },
{ {
id: "merge-pr-merge", id: "merge-pr-merge",
label: "Create a merge commit", label: "Merge",
pendingLabel: "Merging PR...", pendingLabel: "Merging PR...",
successLabel: "PR merged", successLabel: "PR merged",
disabled: false, disabled: false,
@@ -582,7 +601,7 @@ describe("git-actions-policy", () => {
}, },
{ {
id: "merge-pr-rebase", id: "merge-pr-rebase",
label: "Rebase and merge", label: "Merge",
pendingLabel: "Merging PR...", pendingLabel: "Merging PR...",
successLabel: "PR merged", successLabel: "PR merged",
disabled: false, disabled: false,
@@ -684,7 +703,7 @@ describe("git-actions-policy", () => {
); );
expect(oldDaemonStatus.github).toBeUndefined(); expect(oldDaemonStatus.github).toBeUndefined();
expect(actions.primary).toMatchObject({ id: "merge-pr-squash", label: "Squash and merge" }); expect(actions.primary).toMatchObject({ id: "merge-pr-squash", label: "Merge" });
expect(actions.secondary.map((action) => action.id)).toEqual([ expect(actions.secondary.map((action) => action.id)).toEqual([
"pull", "pull",
"push", "push",
@@ -725,7 +744,7 @@ describe("git-actions-policy", () => {
expect(actions.primary).toMatchObject({ expect(actions.primary).toMatchObject({
id: "enable-pr-auto-merge-squash", id: "enable-pr-auto-merge-squash",
label: "Enable auto-merge with squash", label: "Auto merge",
}); });
expect(actions.secondary.map((action) => action.id)).toEqual([ expect(actions.secondary.map((action) => action.id)).toEqual([
"pull", "pull",
@@ -832,7 +851,7 @@ describe("git-actions-policy", () => {
expect(actions.primary).toMatchObject({ expect(actions.primary).toMatchObject({
id: "merge-pr-merge", id: "merge-pr-merge",
label: "Create a merge commit", label: "Merge",
}); });
expect(actions.secondary.map((action) => action.id)).toEqual([ expect(actions.secondary.map((action) => action.id)).toEqual([
"pull", "pull",
+3 -3
View File
@@ -326,6 +326,9 @@ function getPrimaryActionId(input: BuildGitActionsInput): GitActionId | null {
if (canPull(input)) { if (canPull(input)) {
return "pull"; return "pull";
} }
if (canPush(input)) {
return "push";
}
if (canMergePr(input)) { if (canMergePr(input)) {
return getDefaultDirectPullRequestMergeActionId(input); return getDefaultDirectPullRequestMergeActionId(input);
} }
@@ -338,9 +341,6 @@ function getPrimaryActionId(input: BuildGitActionsInput): GitActionId | null {
if (input.shipDefault === "pr" && canUsePullRequestActionAsShipDefault(input)) { if (input.shipDefault === "pr" && canUsePullRequestActionAsShipDefault(input)) {
return "pr"; return "pr";
} }
if (canPush(input)) {
return "push";
}
if (!input.isOnBaseBranch && input.aheadCount > 0) { if (!input.isOnBaseBranch && input.aheadCount > 0) {
return "merge-branch"; return "merge-branch";
} }
+6 -6
View File
@@ -590,16 +590,16 @@ export const ar: TranslationResources = {
success: "مؤرشف", success: "مؤرشف",
}, },
mergePr: { mergePr: {
squash: "الاسكواش والاندماج", squash: "دمج",
merge: "إنشاء التزام الدمج", merge: "دمج",
rebase: "إعادة الأساس والدمج", rebase: "دمج",
pending: "دمج PR...", pending: "دمج PR...",
success: "تم دمج PR", success: "تم دمج PR",
}, },
autoMerge: { autoMerge: {
enableSquash: "تمكين الدمج التلقائي مع الاسكواش", enableSquash: "دمج تلقائي",
enableMerge: "تمكين الدمج التلقائي مع التزام الدمج", enableMerge: "دمج تلقائي",
enableRebase: "تمكين الدمج التلقائي مع rebase", enableRebase: "دمج تلقائي",
enabled: "تم تمكين الدمج التلقائي", enabled: "تم تمكين الدمج التلقائي",
enabling: "تمكين الدمج التلقائي...", enabling: "تمكين الدمج التلقائي...",
disabling: "تعطيل الدمج التلقائي...", disabling: "تعطيل الدمج التلقائي...",
+6 -6
View File
@@ -588,16 +588,16 @@ export const en = {
success: "Archived", success: "Archived",
}, },
mergePr: { mergePr: {
squash: "Squash and merge", squash: "Merge",
merge: "Create a merge commit", merge: "Merge",
rebase: "Rebase and merge", rebase: "Merge",
pending: "Merging PR...", pending: "Merging PR...",
success: "PR merged", success: "PR merged",
}, },
autoMerge: { autoMerge: {
enableSquash: "Enable auto-merge with squash", enableSquash: "Auto merge",
enableMerge: "Enable auto-merge with merge commit", enableMerge: "Auto merge",
enableRebase: "Enable auto-merge with rebase", enableRebase: "Auto merge",
enabled: "Auto-merge enabled", enabled: "Auto-merge enabled",
enabling: "Enabling auto-merge...", enabling: "Enabling auto-merge...",
disabling: "Disabling auto-merge...", disabling: "Disabling auto-merge...",
+6 -6
View File
@@ -595,16 +595,16 @@ export const es: TranslationResources = {
success: "Archivado", success: "Archivado",
}, },
mergePr: { mergePr: {
squash: "Aplastar y fusionar", squash: "Fusionar",
merge: "Crear una confirmación de fusión", merge: "Fusionar",
rebase: "Rebase y fusionar", rebase: "Fusionar",
pending: "FusionandoPR...", pending: "FusionandoPR...",
success: "PRfusionado", success: "PRfusionado",
}, },
autoMerge: { autoMerge: {
enableSquash: "Habilitar la fusión automática con squash", enableSquash: "Fusión automática",
enableMerge: "Habilitar la fusión automática con confirmación de fusión", enableMerge: "Fusión automática",
enableRebase: "Habilitar la fusión automática con rebase", enableRebase: "Fusión automática",
enabled: "Combinación automática habilitada", enabled: "Combinación automática habilitada",
enabling: "Habilitando la fusión automática...", enabling: "Habilitando la fusión automática...",
disabling: "Desactivando la fusión automática...", disabling: "Desactivando la fusión automática...",
+6 -6
View File
@@ -595,16 +595,16 @@ export const fr: TranslationResources = {
success: "Archivé", success: "Archivé",
}, },
mergePr: { mergePr: {
squash: "Écraser et fusionner", squash: "Fusionner",
merge: "Créer un commit de fusion", merge: "Fusionner",
rebase: "Rebase et fusionner", rebase: "Fusionner",
pending: "Fusion dePR...", pending: "Fusion dePR...",
success: "PRfusionné", success: "PRfusionné",
}, },
autoMerge: { autoMerge: {
enableSquash: "Activer la fusion automatique avec squash", enableSquash: "Fusion automatique",
enableMerge: "Activer la fusion automatique avec la validation de fusion", enableMerge: "Fusion automatique",
enableRebase: "Activer la fusion automatique avec rebase", enableRebase: "Fusion automatique",
enabled: "Fusion automatique activée", enabled: "Fusion automatique activée",
enabling: "Activation de la fusion automatique...", enabling: "Activation de la fusion automatique...",
disabling: "Désactivation de la fusion automatique...", disabling: "Désactivation de la fusion automatique...",
+6 -6
View File
@@ -594,16 +594,16 @@ export const ru: TranslationResources = {
success: "В архиве", success: "В архиве",
}, },
mergePr: { mergePr: {
squash: "Сжать и объединить", squash: "Объединить",
merge: "Создать коммит слияния", merge: "Объединить",
rebase: "Перебазировать и объединить", rebase: "Объединить",
pending: "Объединение PR...", pending: "Объединение PR...",
success: "PR объединен", success: "PR объединен",
}, },
autoMerge: { autoMerge: {
enableSquash: "Включить автоматическое объединение со сквошом", enableSquash: "Автообъединение",
enableMerge: "Включить автоматическое слияние с фиксацией слияния", enableMerge: "Автообъединение",
enableRebase: "Включить автоматическое слияние с перебазированием", enableRebase: "Автообъединение",
enabled: "Автоматическое объединение включено", enabled: "Автоматическое объединение включено",
enabling: "Включение автоматического объединения...", enabling: "Включение автоматического объединения...",
disabling: "Отключение автоматического объединения...", disabling: "Отключение автоматического объединения...",
+6 -6
View File
@@ -588,16 +588,16 @@ export const zhCN: TranslationResources = {
success: "已归档", success: "已归档",
}, },
mergePr: { mergePr: {
squash: "Squash and merge", squash: "Merge",
merge: "Create a merge commit", merge: "Merge",
rebase: "Rebase and merge", rebase: "Merge",
pending: "正在 merge PR...", pending: "正在 merge PR...",
success: "PR 已 merge", success: "PR 已 merge",
}, },
autoMerge: { autoMerge: {
enableSquash: "启用 squash auto-merge", enableSquash: "Auto merge",
enableMerge: "启用 merge commit auto-merge", enableMerge: "Auto merge",
enableRebase: "启用 rebase auto-merge", enableRebase: "Auto merge",
enabled: "Auto-merge 已启用", enabled: "Auto-merge 已启用",
enabling: "正在启用 auto-merge...", enabling: "正在启用 auto-merge...",
disabling: "正在禁用 auto-merge...", disabling: "正在禁用 auto-merge...",