Avec l'accès git et rsync au même serveur, vous pouvez utiliser ce serveur pour stocker à la fois l'historique (via l'accès git) et le magasin de valeurs-clés de l'annexe (via l'accès rsync). Ceux-ci peuvent également être découplés et stockés sur un nombre quelconque de serveurs différents.
Il semble que vous ayez déjà lu tous les outils dont vous aurez besoin. Fondamentalement, vous vous retrouverez avec 2 télécommandes distinctes, toutes deux pointant vers des emplacements différents sur le serveur-c. La première télécommande (server-c) est une télécommande git standard pour synchroniser votre historique et tout ce qui est vérifié directement dans le dépôt git. La deuxième télécommande est une télécommande spéciale annexe.
[remote "server-c"]
url = git@example.com:/path/to/repo.git
fetch = +refs/heads/*:refs/remotes/server-c/*
[remote "server-c-rsync"]
annex-rsyncurl = example.com:/home/user/annex-rsync
annex-uuid = ...
Vous devriez pouvoir configurer cela avec quelque chose comme:
git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none
Cela devrait vous procurer les fonctionnalités de base que vous recherchez. Le seul inconvénient est que vous avez 2 noms distants différents qui pointent vraiment vers le même serveur. En particulier, vous devez juste vous rappeler d'utiliser la télécommande spéciale (server-c-rsync) lorsque vous utilisez les arguments --to = ou --from = de get, copy et move.
Il peut être possible de pointer une seule télécommande vers les deux emplacements, mais je ne sais pas si cela est réellement pris en charge. Les commandes suivantes semblent créer un .git / config sensible.
git init
git annex init "test"
git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c type=rsync rsyncurl=example.com:/rsync/user encryption=none
Pour moi, cela se traduit par une seule télécommande en .git / config avec à la fois un url = (pour les opérations git normales) et une annexe-rsyncurl =. Cependant, je n'ai pas testé cela plus avant pour garantir que git annex ignore l'url et utilise uniquement l'entrée annex-rsyncurl lors de l'utilisation avec des fichiers annexés.