Here's a simple example on a repository with three branches, where we'll be adding images-annex as a subtree into master.
$ git branch
git-annex
images-annex
* master
$ git subtree add --squash --prefix=images/ images-annex
Added dir 'images'
$ ls
FILE_A FILE_B images/
...checkout images-annex, make changes, commit...
$ git checkout master
$ git subtree pull --squash --prefix=images/ . images-annex
From .
* branch images-annex -> FETCH_HEAD
Merge made by the 'recursive' strategy.
...(files created/modified/etc)
I have tried a few different methods for merging the subtree in and so far have not been able to keep git-annex links up to date. Running git-annex fix .
does what it's supposed to but then git sees everything as modified. Is this entirely the expected behavior because of the --prefix? I have not used subtrees much before but the model appears to be very helpful for what I'm trying to do.
Known bug: ?Git annexed files symlink are wrong when submodule is not in the same path
I don't think there's much likelyhood of a fix though. Using direct mode probably works around the problem. Or you can use something like myrepos instead of git subtrees.