There are three ways to implement a new special remote:
- 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.
- Writing it in Haskell and adding it to git-annex.
- 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.