Expand description
Classification pass: decide, for every path under the project root, whether it travels in the pack, is dropped, or is merely reported.
The scan is deliberately independent of .gitignore. A pack carries the
whole project — tracked files, the .git directory itself, and the
untracked local state that ordinarily never leaves the machine (a
workspace/ directory, journal databases, sandbox snapshots). Consulting
ignore rules would drop exactly the material the pack exists to preserve.
Four rules decide what does not travel verbatim:
| rule | effect |
|---|---|
| cache directory | not packed, recorded with the file count, size, and any credentials that went with it |
| secret file | not packed, reported; moving credentials is the operator’s own business |
OS debris (.DS_Store) | not packed, recorded; nothing to act on, but nothing leaves untraced either |
| symlink | packed as a link, never dereferenced; recorded so restore can report dangles |
no_link_report path | packed as links, left out of the link report; the rule that did so is recorded |
Only the last is opt-in. A symlink breaks when the project is carried elsewhere, so reporting one is the default and suppressing it takes an explicit declaration from the operator, who alone knows which of their directories are links by design.
Every rule that fired is named in the output. The reports are read in order to act on them — to move a secret out of band, to repair a link, to regenerate a cache — so a rule that quietly changed what a report contains would send the reader after the wrong thing. Suppressing a link report never suppresses the record that it was suppressed.
Structs§
Enums§
- Entry
Kind - What a scanned path is, for the purpose of writing the archive.