I've been using git-annex locally for a couple months. So far I've only used it to keep track of files on my laptop and local usb hard drives. Now I would like to add a network into the picture, and hopefully start to move away from Dropbox.

I have Dropbox on two computers: my home machine and my work machine. The home machine is only on when I'm at home and the work machine is only on when I'm at work, so the computers are never on at the same time and thus can never communicate directly. What are my options for keeping annexes on these two machines in sync?

Initially I was hoping that I could use an S3 special remote for this, but I see that special remotes only hold the actual file data, not any of the git stuff. So I can't push my changes to S3 at work and then pull those changes in at home.

From what I can tell from the documentation, the only way I can handle this problem is to have an annex sitting on a VPS or someplace that both my home and work machines can talk to. Is that correct? That would be ok, but if I'm going to put my annex out there in the cloud somewhere, I want the files to be encrypted. It looks like git-annex only supports encryption of file data with special remotes, not a full annex. Is there no way to have some sort of encrypted git-annex hub?

I backed the assistant and have been following the development blog, but I haven't tried it out yet. Am I correct in thinking that nothing in the assistant will address this particular issue?

I might be thinking too simple, but can't you just put another annex repository on an usbdrive and use it to carry the metadata around? Add it as a remote to both compuers annex repositories and sync when you come/leave. As it does not have to carry the actual data some 100M will usually suffice. Just don't use any special remotes, but simply a cloned git repository.
That's what I've started to do. It gets the job done, but I don't like that I have to remember to plug in the stick and sync to it at the end of the work day, and then plug in the stick and sync from it when I get home. I'm hoping that there is some way to accomplish the syncing automagically, more akin to the Dropbox experience.
Comment by annexuser Fri Nov 2 19:41:27 2012

You need two things:

  1. A special remote in the cloud. S3, or rsync.net, or whatever.
  2. A git repository hosted in the cloud. You could just use github (paying them if you want to avoid it being public).

Is it possible to have an encrypted git remote repository? It's not directly supported by git. The way git needs to be able to request arbitrary objects by SHA, kind of prevents encrypting things to any useful level. The only way I can think of to do that would be to use some cloud storage that can be mounted as a filesystem, and store an encrypted filesystem containing the git repo in a file inside that. Not easy.

The git-annex assistant is going to get around this by not requiring a central git repository and transferring git data peer-to-peer, but that will require both the peers be on the network at the same time.

Comment by http://joeyh.name/ Sun Nov 4 19:44:11 2012

Thanks for the feedback.

I'm thinking the smartest move will be for me to invest in some sort of wall-wart, like a SheevaPlug or RasberryPi. I can use that as the centralized hub and still avoid putting my files on the big bad interwebs.

Comment by annexuser Mon Nov 5 02:07:00 2012
Just a small add-up: I've already used a truecrypt volume file on a dropbox successfully, although not for a git repository. Maybe that's worth a try.
Right now I use Dropbox with encfs. I could do the same thing with git-annex, but it's kind of a hassle.
Comment by annexuser Mon Nov 5 17:20:50 2012
Comments on this page are closed.