Некоторые из них были затронуты на странице приложения git:http://git-annex.branchable.com/forum/migrate_existing_git_repository_to_git-annex/
Мой опыт был менее сложным, мне не нужно было редактировать .gitattributes и, следовательно, не нужно было делать кучу ребаз в передней части. У меня тоже была только одна ветка.
git filter-branch --tag-name-filter cat --tree-filter 'mkdir -p .git-annex; cp ${MYWORKDIR}/.tmp/* .git-annex/; find . -size +5M -type f -not -ipath \*.git\* -not -ipath \*.temp\* -print0 | parallel -0 -j1 ~/bin/gax; git reset HEAD .git-rewrite; :' -- master
Сценарий, который вызывает GNU параллельно: ~/bin/gax выглядит так:
#!/bin/bash
f=$1;
git annex add ${f};
annexdest=$(readlink ${f});
ln -sf ${annexdest#../../} ${f};
Сценарий можно сделать быстрее, передав все файлы одновременно (git Annex игнорирует добавления для несуществующих файлов), но вам придется сделать цикл по части символической ссылки, чтобы исправить их все.
Команду filter-branch также можно выполнить быстрее, сначала сгенерировав список файлов, используя find, и используя этот список вместо того, чтобы каждый раз запускать find в рабочем дереве.