lds-pack 0.14.0

Pack module for local-develop-server (lds) — bundle a whole project (.git plus untracked local assets) into a single portable archive
Documentation

Pack a whole project into one portable archive, and put it back.

An lds pack is not a source tarball and not a git bundle. It carries the project as it actually exists on the machine:

  • the .git directory itself, copied wholesale — so stashes, the reflog, local-only branches, and objects no ref points at all come along. A bundle is assembled from an enumerated set of refs, and everything outside that set is quietly left behind; copying the directory means there is no set to enumerate and nothing to forget.
  • the untracked local state that ordinarily never leaves the machine: a workspace/ tree, journal databases, sandbox snapshots, .mcp.json, .claude/.

Three things are treated specially:

treatment
secrets (.env, *.pem, …) not packed, reported instead — moving credentials is the operator's own business
caches (target/, node_modules/, …) not packed, recorded — regenerable by definition
symlinks packed as links, never followed; reported so a restore elsewhere can name what dangles

.claude/ is its own layer: packed verbatim, with its links counted and their shared roots summarized rather than enumerated one by one.

Example

use lds_pack::{CreateOptions, RestoreOptions, create, restore};

let report = create(&CreateOptions::new("/path/to/proj", "proj.pack", "0.13.3"))?;
println!("packed {} files", report.manifest.stats.file_count);

let restored = restore(&RestoreOptions::new("proj.pack", "/tmp/proj"))?;
if restored.needs_attention() {
    println!("{} symlinks dangle here", restored.dangling_symlinks.len());
}
# Ok::<(), lds_pack::PackError>(())