You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
api: a diff-commit patch that does not apply now gets 409 conflict instead of 422 invalid, and a diff payload that is not a valid patch or that names an invalid path now gets 400 invalid instead of 422.
api:GET .../files without recursive lists every file in the tree instead of the direct children. It answers 422 when that listing passes the 64 MiB git output budget. Send recursive=false to get the direct children.
api: when another writer moves the branch after the server wrote the commit, commit-pack and diff-commit now answer 409 with result.status failed instead of conflict, and the body carries the written commit in commit and result.new_sha.
api: GitHub sync creates during a rolling upgrade. Only an upgraded worker adopts the GitHub default branch for a sync create that omits default_branch. A sync that an older worker runs leaves the repo on main until the next sync by an upgraded worker. An older replica's PATCH /repo to main before that sync does not stop the adoption, so the repo still moves to the GitHub branch. Upgrade every replica before you send GitHub sync creates that omit default_branch, or send default_branch explicitly. Tracked in #609.
api: a commit-pack or diff-commit request that changes nothing now gets 412 precondition_failed "no changes to commit" instead of an empty commit. A commit-pack or diff-commit stream that ends before its eof chunk now gets 412 instead of 400.
api: GET /api/v1/repos/files/metadata and GET /api/repos/{repo_name}/files/metadata now send only the subject line of each commit message in the commits map (the first paragraph as one line, the same as git's %s). Clients that need the body or the trailers must read GET /api/v1/repos/commit.
api: GET /api/v1/repos/commits and GET /api/repos/{repo_name}/commits now send only the subject line of each commit message (the first paragraph as one line, the same as git's %s). Clients that need the body or the trailers must read GET /api/v1/repos/commit.
api:files and files/metadata calls without limit and cursor return every entry instead of one page, and files/metadata answers 429 when the files under path have more than 50,000 distinct last commits.
api: a failed merge guard on POST /api/v1/repos/merge and POST /api/repos/{repo_name}/merge now answers code ref_guard_failed instead of conflict, with guard and current_sha members. A merge with expected_source_sha whose source branch does not exist answers 409 ref_guard_failed with current_sha 40 zeros instead of 404. Clients that branch on code conflict for a merge guard must check ref_guard_failed.
api: a stale expected_target_sha on POST /api/v1/repos/merge and POST /api/repos/{repo_name}/merge now answers 409 with a problem body, code conflict, instead of 412 with result.status precondition_failed. Raw HTTP callers that check for 412 must check for 409 and the conflict code. SDK callers keep the same error type.
api:POST /repos now answers 200 with the existing repo instead of 409 for a plain, copy or fork create of a name that a finished repo without an upstream holds. A repeat copy or fork answers before it reads its source.
api:POST /repos now answers 503 with Retry-After instead of 409 for a plain, copy or fork create of a name whose fork or copy create has not finished, including one that crashed or whose last step failed. A sync create pending after its upstream link was removed gets the same answer. DELETE /repos/delete clears such a name.
s3wal: S3WAL only, PostgreSQL and SQLite are not affected. An S3WAL bucket written by v0.16.0 through v0.18.0 must be converted before this release serves it. Stop serve and wait for it to exit, take a backup, replace the binary, run openstorage s3wal-meta convert --to 2, then start serve. Upgrade an older bucket to v0.18.0 first. To go back, stop serve, take a backup, and run openstorage s3wal-meta convert --to 1 with this release before starting the older release. See docs/how-to/deploy-production.md#upgrading-the-s3wal-metadata-format.
api:POST /repos with upstream or a base_repo sync, for a name that a repo with the same upstream and the same forward_pushes holds, now answers 200 with the existing repo instead of 409. A repeat create of a pending sync repo by a token with only repo:write now answers 403 instead of 409.
Features
api: a fork or copy is pending until its ref write (#450) (49bc1ac)
api: a repeat create of a finished repo answers 200 (#453) (295de82)
api: a repeat sync create of the same upstream answers 200 (#438) (0a4994f)
api: answer a stale merge expected_target_sha with 409 conflict (#536) (198cc45)
api: answer failed merge guards with 409 ref_guard_failed (#571) (d7c1eb8)
api: honor expected_source_sha on merge (#535) (0341af9)
api: name invalid fields from the single-field body validators (#443) (e1beeeb)
api: name the invalid field in invalid_params on body decode failures (#436) (66f5c32)
api: send a Deprecation header on the deprecated pull-upstream and base routes (#460) (ea43a01)
api: send only the subject line in commit list entries (#575) (f0c975a)
api: send only the subject line in files/metadata commits (#579) (5e9bbe6)
meta: add the ADR-50 schedule transitions for S3WAL metadata v2 (#448) (27b24bd)
meta: add the S3WAL metadata v1/v2 conversion (ADR-51) (#441) (ba8365a)
meta: complete the S3WAL local schedule (#449) (ae6e3a0)
s3wal: repair or refuse unfinished creates on convert --to 1 (#489) (5b06087)
s3wal: run S3WAL upstream syncs on the durable local schedule (#451) (f0153d4)
s3wal: schedule upstream syncs from S3WAL git-surface pushes (#454) (f5d362a)