readme: add zero-to-install quick start, Arch deps, cross-repo links

This commit is contained in:
Maciek "mab122" Bator 2026-07-14 12:51:22 +02:00
parent fb95fd0c68
commit 11236adf83
1 changed files with 41 additions and 10 deletions

View File

@ -3,10 +3,14 @@
A [Git LFS custom transfer agent][custom-transfer] that backs large file storage with A [Git LFS custom transfer agent][custom-transfer] that backs large file storage with
[IPFS](https://ipfs.tech), for use with [Radicle](https://radicle.xyz) repositories. [IPFS](https://ipfs.tech), for use with [Radicle](https://radicle.xyz) repositories.
This is the companion binary for the `rad lfs` support added to a This is the companion binary for the `rad lfs` support added in
[fork of `heartwood`](../radicle-heartwood-lfs) (Radicle's core node/CLI). It is not meant to [**radicle-heartwood-lfs**](https://git.hswro.org/mab122/radicle-heartwood-lfs) (a fork of
be invoked directly — `git lfs` spawns it automatically once a repository has been set up with Radicle's core node/CLI, `heartwood`). **Most people want to start there, not here** — that
`rad lfs init`. repo has the full zero-to-usable setup guide. This repo is what you're reading if you want to
build/understand the transfer agent on its own, or you're following a link back from there.
`rad-lfs-transfer` is not meant to be invoked directly — `git lfs` spawns it automatically,
once a repository has been set up with `rad lfs init` (from the fork above).
[custom-transfer]: https://github.com/git-lfs/git-lfs/blob/main/docs/custom-transfers.md [custom-transfer]: https://github.com/git-lfs/git-lfs/blob/main/docs/custom-transfers.md
@ -26,9 +30,25 @@ Instead of a shared, seed-hosted LFS server, every peer uses their own local IPF
looks up its `cid=` note, and fetches the content from your local IPFS daemon (which will looks up its `cid=` note, and fetches the content from your local IPFS daemon (which will
pull it from the wider IPFS network if it isn't local yet). pull it from the wider IPFS network if it isn't local yet).
There is no central server anywhere in this design — see the companion `heartwood` fork's There is no central server anywhere in this design — see
documentation for the full rationale and how `rad seed`/`rad unseed` tie IPFS pinning to [radicle-heartwood-lfs's `LFS-IPFS.md`](https://git.hswro.org/mab122/radicle-heartwood-lfs/src/branch/rad-lfs-ipfs/LFS-IPFS.md)
Radicle's existing seeding lifecycle. for the full rationale and how `rad seed`/`rad unseed` tie IPFS pinning to Radicle's existing
seeding lifecycle.
## Dependencies
On Arch Linux:
```sh
# To build and install
sudo pacman -S --needed rust git
# To actually use it (not needed to build/install — see "Requirements" below)
sudo pacman -S --needed kubo
```
On other distributions, install a Rust toolchain (e.g. via [rustup](https://rustup.rs)), Git,
and — only when you want to use LFS, not to build this — [Kubo](https://docs.ipfs.tech/install/).
## Requirements ## Requirements
@ -37,16 +57,27 @@ Radicle's existing seeding lifecycle.
running when `git lfs push`/`pull` tries to use it, you'll get a clear error telling you to running when `git lfs push`/`pull` tries to use it, you'll get a clear error telling you to
start one (`ipfs daemon`) — nothing fails silently, and nothing about building or installing start one (`ipfs daemon`) — nothing fails silently, and nothing about building or installing
this binary requires IPFS to be present at all. this binary requires IPFS to be present at all.
- [Git LFS](https://git-lfs.com) installed (`git-lfs` on your `PATH`). - [Git LFS](https://git-lfs.com) installed (`git-lfs` on your `PATH`) — `git-lfs` package on
Arch (`sudo pacman -S --needed git-lfs`).
## Build & install ## Build & install
```sh ```sh
git clone ssh://git@git.hswro.org:9022/mab122/radicle-lfs-transfer.git
cd radicle-lfs-transfer
cargo install --path . cargo install --path .
``` ```
This installs the `rad-lfs-transfer` binary to `~/.cargo/bin` (make sure that's on your This installs the `rad-lfs-transfer` binary to `~/.cargo/bin` by default — make sure that's on
`PATH` — it's needed there so `git lfs` can find it once `rad lfs init` configures it). your `PATH`. If you're installing it alongside `radicle-heartwood-lfs` (the usual case), install
it to that project's shared root instead so everything ends up in one place:
```sh
cargo install --path . --force --locked --root ~/.radicle
```
(You normally don't need to clone this repo separately at all for that — `radicle-heartwood-lfs`
includes it as a git submodule and its own setup instructions cover installing both together.)
## Configuration ## Configuration