diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-02-03 16:13:59 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-02-03 17:05:16 +0000 |
| commit | c163d717147b92b16d89da2fbccef775647b5a07 (patch) | |
| tree | 8e512d1d64a3665c2b90954fac9f3d707d7e99d3 /docs/explanation/inline-authorization.md | |
| parent | 874a8abe1d076cfafd9baf919ec23d7d58200698 (diff) | |
fix: accept no-op pushes where old_oid == new_oid
Fixes race condition where user's push becomes no-op after state event
is applied between fetch and push. Now accepts these as successful
no-ops, matching Git's 'Everything up-to-date' behavior.
- Add early detection in get_state_authorization_for_specific_owner_repo
- Return success for all-noop pushes without requiring purgatory event
- Document behavior in inline-authorization.md
Diffstat (limited to 'docs/explanation/inline-authorization.md')
| -rw-r--r-- | docs/explanation/inline-authorization.md | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/docs/explanation/inline-authorization.md b/docs/explanation/inline-authorization.md index 7081f63..80bd98f 100644 --- a/docs/explanation/inline-authorization.md +++ b/docs/explanation/inline-authorization.md | |||
| @@ -352,6 +352,10 @@ pub async fn authorize_push( | |||
| 352 | - If no event found, create placeholder (git-data-first scenario) | 352 | - If no event found, create placeholder (git-data-first scenario) |
| 353 | - Collect PR events from purgatory for post-push processing | 353 | - Collect PR events from purgatory for post-push processing |
| 354 | 354 | ||
| 355 | **No-Op Push Acceptance:** Pushes where all refs have `old_oid == new_oid` are accepted without requiring a purgatory state event, matching Git's "Everything up-to-date" behavior and avoiding race condition rejections. | ||
| 356 | |||
| 357 | --- | ||
| 358 | |||
| 355 | ## State Event Authorization | 359 | ## State Event Authorization |
| 356 | 360 | ||
| 357 | State events (kind 30618) undergo authorization checks at three points (defense-in-depth): | 361 | State events (kind 30618) undergo authorization checks at three points (defense-in-depth): |