Repository navigation
v0.8.8 - Measured Against a Real Server: Size Caps, Chunked Uploads, and One Fewer Moving Part
What's Changed in v0.8.8
This release started as a simplification pass and became a size release when the changes were finally
measured against a real Seafile server (CE 13.0.28). Three things the stub could not have told us:
- A single request of 2 GiB is reset (1.75 GiB is accepted), so an uncapped 4 GiB tail merge failed at
its upload and a single 20 GB raw-data pack could never have been pushed. - The same server assembles a 5 GiB file from
Content-Rangechunks and serves it back
byte-identical. - Git for Windows with
core.autocrlf=truesilently truncates a 4 GiB+ blob atgit add(5 GiB came out
as 1 GiB) and stallsgit cloneof one. The helper cannot prevent the first; it now warns before the
second.
Upgrading from 0.8.7 or earlier
seafile.autogcis on by default;git config seafile.autogc falserestores tip-only behaviour.- Usage errors exit 2 on stderr (they were 1 on stdout).
seafile.locksettleandseafile.gcmaxmibare retired (reported once, then ignored);
seafile.gcmaxpackmibis now the largest pack the helper writes.- Clients older than 0.8.4 must not share a remote with this version.
Added
- Pack size cap and chunked upload. Every pack is capped at
seafile.gcmaxpackmib(1 GiB); files of
1 GiB or more upload in 128 MiBContent-Rangechunks, checked against the listing afterwards. git-remote-seafile doctor [url]- login, how the URL is interpreted, safety guards, a write probe.gc --tail- run the automatic tail merge by hand.- A "Known Limitations and What They Mean for You" section in the User Guide.
- A real-server test tier (opt-in) and a differential test of ref-name validation against
git.
Changed
- Automatic tail merge defaults on; budget is 2x the cap; packs at least half the cap are frozen.
- One output and exit-code convention for every subcommand;
cli.mainis a dispatch table. cmd_pushis a sequence of named steps shared with--dry-run.- Concurrent pushers wait by queue progress, not wall time; a waiting ticket is not re-uploaded each poll.
- Push-time
pack-objectsno longer delta-searches big blobs (50 s to 5 s on the measured payload). - The snapshot tool's source is cohesive parts built into one file; its watchdog is thread-free.
- Snapshot tool: the raw-payload profile starts at a sample ratio of 0.5 (was 0.9), so mixed data stages at 125-200 MiB/s instead of ~45 (131 GiB: ~50 minutes before, ~20 now); a free-space guard and a temp-pack sweep protect large runs.
Fixed
- Encrypted libraries are refused clearly; ref-name validation matches
git check-ref-format. - Conflict copies are named when they appear;
HEADread failures cannot half-advertise refs;
deleting HEAD's branch says how to repair it; uploads wait for the server's reply; stderr is UTF-8. - Snapshot tool: git failures are not "diverged", settings are remembered only after success,
--restorefinds the remote's only branch.
The full list, with measurements, is in CHANGELOG.md.
Full Changelog: v0.8.7...v0.8.8