now supports atomic partial updates using the PATCH method: give it a subdirectory and it will update its contents without touching anything else

you can use it to e.g. upload previews of built documentation without having to maintain giant git checkouts with stale files for thousands of pull requests. and it's efficient, too!

see codeberg.org/whitequark/whiteq for an example workflow

whitequark.codeberg.page/
whitequark.codeberg.page/previ

With feature patch: In response to a PATCH request, the server partially updates a site with new content. The URL of the request must be the root URL of the site that is being published.
The request must have a application/x-tar, application/x-tar+gzip, or application/x-tar+zstd body, whose contents is merged with the existing site contents as follows:
A character device entry with major 0 and minor 0 is treated as a "whiteout marker" (following unionfs): it causes any existing file or directory with the same name to be deleted.
A directory entry replaces any existing file or directory with the same name (if any), recursively removing the old contents.
A file or symlink entry replaces any existing file or directory with the same name (if any).
In any case, the parent of an entry must exist and be a directory.
The request must have a Race-Free: yes or Race-Free: no header. Not every backend configuration makes it possible to perform atomic compare-and-swap operations; on backends without atomic CAS support, Race-Free: yes requests will fail, while Race-Free: no requests will provide a best-effort approximation.
If a PATCH request loses a race against another content update request, it may return 409 Conflict. This is true regardless of the Race-Free: header value. Whenever this happens, resubmit the request as-is.
If the site has no contents after the update is applied, performs the same action as DELETE.
0

If you have a fediverse account, you can quote this note from your own instance. Search https://mastodon.social/users/whitequark/statuses/115662146389802032 on your instance and quote it. (Note that quoting is not supported in Mastodon.)