Avec un 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 annexe clé-valeur (via l'accès rsync). Ces deux éléments peuvent également être découplés et stockés sur un nombre quelconque de serveurs différents.
On dirait que vous vous êtes déjà renseigné sur tous les outils dont vous aurez besoin. En gros, vous allez vous retrouver avec 2 remote distincts, pointant tous deux vers des emplacements différents sur server-c. La première télécommande (server-c) est une télécommande git normale pour synchroniser votre historique et tout ce qui est vérifié directement dans le repo 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 être en mesure de configurer cela avec quelque chose du genre :
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 permettre d'obtenir la fonctionnalité de base que vous recherchez. Le seul inconvénient est que vous avez 2 noms distants différents qui pointent réellement vers le même serveur. En particulier, vous devez 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 est peut-être possible de faire pointer une seule télécommande vers les deux sites, mais je ne suis pas sûr que cela soit réellement pris en charge. Les commandes suivantes semblent créer un .git/config raisonnable.
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 un seul remote dans .git/config avec à la fois un url= (pour les opérations normales de git) et un annex-rsyncurl=. Cependant, je n'ai pas testé cela plus avant pour m'assurer que git annex ignore l'url et utilise uniquement l'entrée annex-rsyncurl lors de l'utilisation de fichiers annexés.