~ehmry/git-annex-remote-nncp

NNCP special remote for git-annex
Buildable without flakes
Do not select an nncp-version in the overlay

refs

trunk
browse  log 

clone

read-only
https://git.sr.ht/~ehmry/git-annex-remote-nncp
read/write
git@git.sr.ht:~ehmry/git-annex-remote-nncp

You can also use your local clone with git send-email.

#NNCP special remote for git-annex

Two utilities for sending and receiving git-annex data using the special remote and the p2p git-annex protocols.

This is fully asychronous remote, the sender cannot check if a file is present at the receiver so files are always transmitted. I recommend adding both SSH and NNCP remotes for a host, syncronizing metadata over SSH and pushing new data with NNCP.

#Installation

I included a Nix flake. I don't know how to install this otherwise and I can't be bothered to work that out. Nim cannot build programs with the '-' character in their names, so both utilities need to be renamed after building.

Git-annex will need to find git-annex-remote-nncp somewhere in its PATH environmental variable.

#Receiver

Configure a handler in the receiver NNCP configuration. Each repository that can be pushed into needs to be listed as a seperate handler. The handler arguments are:

  • Location of nncp-git-annex program
  • A PATH specification from which the git-annex programs can be found (on NixOS this can be left empty, the utilities are wrapped)
  • Location of git-annex repository to push into

Configuration at Bob:

{
  "neigh": {
    "alice": {
      "exec": {
        "git-annex-music": [
          "/usr/local/bin/nncp-git-annex" "/usr/bin" "/home/bob/music"
        ] } } }
}

#Sender

Init (or enable) a remote with the node and handler set to the NNCP remote node name and handler configurate at the remote node.

git annex initremote bob-nncp encryption=none type=external externaltype=nncp node=bob handler=git-annex-music

#Workflow

#Alice

Send foo.opus to Bob.

git annex copy --to bob-nncp ./foo.opus

nncp-stat -pkt -node bob # List outgoing packets for Bob

nncp-call bob # Transfer packet to Bob

#Bob

nncp-stat -pkt -node alice # List incoming packets from Alice
nncp-toss # Process packes from Alice