github / github/gh-stack

A stacked pull request cannot use auto-merge

Đang mở
#504 0 bình luận 4 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Go
Star
1.5k
Fork
70
Merge trung bình
1 ngày 8 giờ
Pull request đã merge (30 ngày)
7

Mô tả

## Summary

`gh stack link` refuses a pull request that has auto-merge enabled, so adopting a stack costs a capability that an unstacked pull request keeps. Every layer then needs a person at the keyboard at the moment the layer below lands.

## Evidence

Both pull requests approved and green. `#101` had auto-merge enabled, so linking failed:

```text
Checking existing stacks...
Looking up PRs for 2 branches...
✗ PR #101 cannot be added to a stack: it has auto-merge enabled
```

Turning auto-merge off let the link succeed.

This compounds the behaviour in #174. When the bottom layer merges, the layer above leaves the queue and GitHub rewrites its head, which restarts its required checks. Nothing puts it back. With auto-merge unavailable, only a person can, and only once the restarted checks finish. A stack of three with a 15-minute required check needs three waits and three manual enqueues to land one change.

## Expected

A stacked pull request can use auto-merge, so each layer enqueues itself once its base merges and its checks pass.

If the two genuinely cannot coexist, say so where the user meets it: `gh stack link` should explain why auto-merge and stacks are exclusive, and the stack panel should say that each layer needs a manual enqueue.

## Actual

`gh stack link` rejects the pull request with no explanation of the conflict, and offers no alternative.

## Environment

- `gh` 2.100.0, `gh stack` v0.0.8
- Trunk protected by a merge queue, `merge_method: REBASE`
- Two-layer stack, both pull requests approved with required checks passing

## Reproduction

1. Open two pull requests that stack on each other, both approved and green.
2. Enable auto-merge on the bottom one.
3. Run `gh stack link `.

## Note on scope

This reports only what was observed: `gh stack link` rejects a pull request that already has auto-merge enabled. The reverse direction, enabling auto-merge on a pull request that is already stacked, was not tested, because the repository in question has `allow_auto_merge: false` set at the repository level for unrelated reasons.

## Related

- #174 — the layer above leaves the queue and is not put back, which is what makes the missing auto-merge costly
- #172 — "'Merge stack' appears to enqueue only the bottom PR"
- #502 — the merge queue rewrites a commit that needed no rewrite, which is what restarts the checks
- #503 — the panel gives no sign that a manual enqueue is needed

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Start with the `gh stack link` command and reproduce the rejection using the two-layer scenario in the issue. Read the handling of auto-merge and stack linking alongside related issues #174, #172, #502, and #503. Done means stacked pull requests can retain auto-merge, or the command and stack panel clearly explain the incompatibility and manual enqueue requirement.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
github, go
Lĩnh vực
cli, devops
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
48/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.