fix: auto-init repo on negotiate so first push can succeed Mirrors getHead's empty-repo handling: an authenticated client negotiating against a non-existent panproto-vcs store means it's about to push everything. open_or_init creates the FsStore so the push can proceed instead of bailing with a 500.
Author: Aaron Steven White
Commit
613ec8ea29bb6eedde1a5b1cf9378e070647582bParent: 3da89680e7
Structural diff unavailable
These commits were pushed via plain git push, so no pre-parsed
schemas are available. Install git-remote-cospan and re-push via panproto:// to
see scope-level changes, breaking change detection, and semantic diffs.
brew install panproto/tap/git-remote-cospan1 file changed +3 -1
@@ -28,8 +28,10 @@ pub async fn negotiate(
2828 Json(input): Json<NegotiateInput>, 2929 ) -> Result<Json<serde_json::Value>, NodeError> { 3030 let store = state.store.lock().await; 31+ // Auto-init on first push: an authenticated client negotiating against 32+ // a not-yet-existing repo means "I'm about to push you everything". 3133 let fs_store = store 32- .open(&input.did, &input.repo) 34+ .open_or_init(&input.did, &input.repo) 3335 .map_err(|e| NodeError::Internal(format!("store error: {e}")))?; 3436 3537 // Build set of objects the client already has