Due to popular demand, git-annex can now be used with bare repositories.
So, for example, you can stash a file away in the origin:
git annex move mybigfile --to origin
Of course, for that to work, the bare repository has to be on a system with git-annex-shell installed. If "origin" is on GitWeb, you still can't use git-annex to store stuff there.
It took a while, but bare repositories are now supported exactly as well as non-bare repositories. Except for these caveats:
git annex fsckworks in a bare repository, but does not display warnings about insufficient copies. To get those warnings, just run it in one of the non-bare checkouts.
git annex unusedin a bare repository only knows about keys used in branches that have been pushed to the bare repository. So use it with care..
- Commands that need a work tree, like
git annex addwon't work in a bare repository, of course.
- However, you can run commands like
git annex copy,
git annex get, and
git annex dropin a bare repository. In a bare repository, these behave as if the
--alloption were used, and so operate on every single version of every single file that is present in the git repository history. The
--branchoption can be used to make these commands only operate on the files referenced by a specified branch.
git annex get --branch master
Here is a quick example of how to set this up, using
origin as the remote name, and assuming
~/annex contains an annex:
On the server:
git init --bare bare-annex.git cd bare-annex.git && git annex init origin
Now configure the remote and do the initial push:
cd ~/annex git remote add origin example.com:bare-annex.git git push origin master git-annex
git annex info should show the configured bare remote. If it does
not, you may have to pull from the remote first (older versions of
If you wish to configure git such that you can push/pull without arguments, set the upstream branch:
git branch master --set-upstream origin/master