There are three ways to implement a new special remote:

  1. Using the hook special remote to tell git-annex what commands to run to store and retrieve data. This is the easiest way, and is great for prototyping.
  2. Writing it in Haskell and adding it to git-annex.
  3. Writing a program in any language you like that speaks the external special remote protocol.

The rest of this page concentrates on writing new external special remotes. It's not hard!

  • All you need is to make a program with a name like git-annex-remote-$bar.
  • Install it in PATH.
  • When the user runs git annex initremote foo type=external externaltype=$bar, it will use your program.
  • See external special remote protocol for what the program needs to do. There's an example at the end of this page.
  • If things don't seem to work, pass --debug and you'll see, amoung other things, a transcript of git-annex's communication with your program.
  • If you build a new special remote, please add it to the list of special remotes.

libraries

For Python, there is a library by Lykos153 and a library by xloem that take care of all the protocol details.

examples

Here's an example of using an external special remote to add torrent support to git-annex: git-annex-remote-torrent

Here's a simple shell script example, which can easily be adapted to run whatever commands you need. Or better, re-written in some better language of your choice.

Posted Sat Apr 1 18:48:32 2023