docs: fix stale pre-batching pre-commit hook description
The pre-commit hook (installed by rad-heartwood-lfs's `rad lfs init`) no longer calls `rad lfs store` once per staged file -- it batches every file into one `rad lfs precommit` call, so a private repo's passphrase is only prompted for once per commit rather than once per file. Also note the push gotcha (pushing a commit and pushing its `refs/notes/rad-lfs` mapping are two separate `git push rad` invocations) here too, not just in the companion repo's docs.
This commit is contained in:
parent
ac4a27c098
commit
fe270dca8f
17
README.md
17
README.md
|
|
@ -17,17 +17,20 @@ once a repository has been set up with `rad lfs init` (from the fork above).
|
||||||
## How it works
|
## How it works
|
||||||
|
|
||||||
Every peer uses their own local IPFS node — there's no shared server. All of the actual
|
Every peer uses their own local IPFS node — there's no shared server. All of the actual
|
||||||
IPFS add/pin work and git-notes bookkeeping (`refs/notes/rad-lfs`) lives in the `rad lfs
|
IPFS add/pin work and git-notes bookkeeping lives in the `rad lfs store`/`rad lfs fetch`/
|
||||||
store`/`rad lfs fetch` subcommands, implemented in the companion
|
`rad lfs precommit` subcommands, implemented in the companion
|
||||||
[**radicle-heartwood-lfs**](https://git.hswro.org/mab122/radicle-heartwood-lfs) fork — that's
|
[**radicle-heartwood-lfs**](https://git.hswro.org/mab122/radicle-heartwood-lfs) fork — that's
|
||||||
also where content gets encrypted for private repositories before it ever reaches IPFS. This
|
also where content gets encrypted for private repositories before it ever reaches IPFS. This
|
||||||
crate deliberately has no dependency on Radicle's identity/crypto stack; it just shells out:
|
crate deliberately has no dependency on Radicle's identity/crypto stack; it just shells out:
|
||||||
|
|
||||||
- On `git add`/`git commit`, a pre-commit hook (installed by `rad lfs init`) runs `rad lfs
|
- On `git add`/`git commit`, a pre-commit hook (installed by `rad lfs init`) collects every
|
||||||
store` on each staged LFS-tracked file, which adds it to your local IPFS daemon, pins it,
|
staged LFS-tracked file's oid/size and passes them all to a single `rad lfs precommit` call,
|
||||||
encrypts it first if the repo is private, and records the resulting CID as a git note. That
|
which adds each one to your local IPFS daemon, pins it, encrypts it first if the repo is
|
||||||
notes ref travels with the repository via Radicle's normal replication, alongside everything
|
private, and records the resulting CID as a git note (batched into one call, rather than one
|
||||||
else.
|
per file, so a private repo's passphrase is only prompted for once per commit). Note that
|
||||||
|
committing the note locally and pushing it are separate steps in Radicle — pushing your
|
||||||
|
commit (`git push rad <branch>`) does **not** also push the notes ref; that needs a separate
|
||||||
|
bare `git push rad` (see radicle-heartwood-lfs's `LFS-IPFS.md` for the full explanation).
|
||||||
- `rad-lfs-transfer` implements the other half: when `git lfs push`/`pull` runs, it's invoked
|
- `rad-lfs-transfer` implements the other half: when `git lfs push`/`pull` runs, it's invoked
|
||||||
per-object over stdin/stdout JSON (the standard Git LFS custom-transfer-agent protocol) and:
|
per-object over stdin/stdout JSON (the standard Git LFS custom-transfer-agent protocol) and:
|
||||||
- **upload**: shells out to `rad lfs store --oid <oid> --size <size> <path>`, which is
|
- **upload**: shells out to `rad lfs store --oid <oid> --size <size> <path>`, which is
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue