upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-02-03 16:13:59 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-02-03 17:05:16 +0000
commitc163d717147b92b16d89da2fbccef775647b5a07 (patch)
tree8e512d1d64a3665c2b90954fac9f3d707d7e99d3 /docs
parent874a8abe1d076cfafd9baf919ec23d7d58200698 (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')
-rw-r--r--docs/explanation/inline-authorization.md4
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
357State events (kind 30618) undergo authorization checks at three points (defense-in-depth): 361State events (kind 30618) undergo authorization checks at three points (defense-in-depth):