Repository navigation
Checkpoints: what to do with large untracked files #18617
Replies: 2 comments
|
Another data point from today's nightly, plus a second leak location I haven't seen mentioned. Setup: T3 Code 0.1.2-nightly.20261022.3541, macOS 27.0.1 (arm64), git 2.54.0 (Apple Git-157). One Claude thread in a project with 2.8 GB of untracked downloaded videos (largest files 1.2 GB and 724 MB). What happened: every checkpoint Where the garbage was:
Two-thirds of it was in On the policy question: option 1 (cap, with restore keeping skipped files) would have prevented this. Whatever the cap ends up being, two more things would help: stop retrying after a few timeouts on an unchanged workspace, and tell the user that checkpoints are failing and why. Workaround until the PRs land: add the large folders to |
|
Data point from a different shape of the same leak: many small untracked files, no large file at all, in a repository with no commits. The size-cap approach alone would not have prevented it; the quarantine-and-cleanup approach would. Setup. T3 Code 0.1.2 (stable), macOS 26.6.2 (arm64), Homebrew git 2.56.0. The project root is a multi-repository workspace: ~60 GB, tens of thousands of files, where every sub-project is its own git repository and the root itself was never meant to be one. A stray What happened. Every
What was in them. One sampled directory: 2,878 objects, all blobs, 0 trees, 0 commits. 269 of 269 PDFs sampled from the worktree hash to a blob present in both the oldest and the newest directory, i.e. every capture restarted from zero and re-encoded the same alphabetical first ~790 MB of the tree. A file modified after the first capture is absent from the oldest directory, as expected. Why #15297 alone would not cover this. No single file is large; the cost is the number of untracked files and the total volume. With an empty HEAD, What would have stopped it, from this case.
Cleanup on our side: the stray |
Uh oh!
There was an error while loading. Please reload this page.
Note
Written by
claude-opus-5-5on behalf of TobiCheckpoint capture runs
git add -Ainto a private index under the 30 s Git timeout.A large untracked file in the workspace (in my case a 1.5 GB model) makes every capture time out, and each killed capture leaves a half-written
tmp_pack_*in.git/objects/pack.My machine collected 240 orphaned packs (153.4 GiB) in two days.
#15400 cleans up those leftover packs.
This discussion is about the other half: whether checkpoints should keep trying to capture such files at all.
Measured on macOS with Git 2.54, one tracked text file plus one untracked file of random data:
I'd like direction on which policy you'd accept:
How a user would learn that a file was left out: with #15297 as it stands, they would not. Nothing is shown, and they find out only when a restore leaves the large file in place.
If you pick option 1 or 2, I'd add one of these to the same PR, whichever you prefer:
#15400 is independent and can land whichever option you pick.
Draft implementation of option 1: #15297.
All reactions