git-annex/ special remotes/ external

There are four 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.

example.sh
Comments on this page are closed.