radicle-heartwood-lfs/crates/radicle-cli/src
Maciek "mab122" Bator bb8608e984 Add rad lfs init and IPFS-backed pinning for seed/unseed
Adds Git LFS support for repositories, with large file content stored on
each contributor's own local IPFS node instead of a seed-hosted server:

- `rad lfs init`: one-time setup (transfer-agent config, pre-commit hook,
  notes-ref push/fetch refspecs, IPFS daemon reachability check).
- `refs/notes/rad-lfs` carries the oid -> CID mapping, replicating with
  the repository via Radicle's existing ref sync (verified against
  `references_of` in crates/radicle/src/storage/git.rs: every ref is
  replicated except refs/tmp/heads/*, so no protocol changes were needed).
- `rad seed`/`rad unseed` now pin/unpin a repo's known LFS objects in IPFS,
  mirroring Radicle's existing "seeding = keep a full copy" model, and
  warning (not failing) if no local IPFS daemon is reachable.

The actual byte transfer is handled by a separate binary, rad-lfs-transfer
(added here as a submodule), which implements the Git LFS custom-transfer-
agent protocol against a local IPFS daemon. See LFS-IPFS.md for the full
design and setup instructions.

Building and using `rad` for anything other than `rad lfs` requires no
IPFS dependency at all; `rad lfs init` checks for a local daemon upfront
and fails with an actionable message rather than proceeding silently.
2026-07-14 12:32:12 +02:00
..
commands Add rad lfs init and IPFS-backed pinning for seed/unseed 2026-07-14 12:32:12 +02:00
git radicle-cli: fix tests for git ddiff on Windows. 2026-06-23 17:17:39 +01:00
terminal radicle/cob/identity: Rewrite Evaluation 2026-07-02 09:56:22 +01:00
commands.rs Add rad lfs init and IPFS-backed pinning for seed/unseed 2026-07-14 12:32:12 +02:00
common_args.rs radicle: Teach `rad sync` and `rad clone` to accept feature levels 2026-03-24 15:07:18 +00:00
git.rs rust/msrv: 1.85.0 → 1.88.0 2026-05-11 11:23:18 +01:00
ipfs.rs Add rad lfs init and IPFS-backed pinning for seed/unseed 2026-07-14 12:32:12 +02:00
lib.rs Add rad lfs init and IPFS-backed pinning for seed/unseed 2026-07-14 12:32:12 +02:00
main.rs Add rad lfs init and IPFS-backed pinning for seed/unseed 2026-07-14 12:32:12 +02:00
node.rs rust/edition/fmt: 2021 → 2024 2026-03-30 16:57:51 +02:00
pager.rs term, cli: `winsplit` over `shlex` on Windows 2026-02-11 10:26:22 +01:00
project.rs treewide: Spelling 2026-04-30 15:50:29 -04:00
terminal.rs rust/msrv: 1.85.0 → 1.88.0 2026-05-11 11:23:18 +01:00
warning.rs radicle: Warn less aggressively on IPv6 addresses 2026-05-21 14:52:35 +01:00