Alojar un Anexo Git en un servidor sin git-annex instalado

Alojar un Anexo Git en un servidor sin git-annex instalado

Las máquinas A y B albergan un comúnanexo gitrepositorio. Ambos tienen laanexo gitprograma instalado y edito/confirmo/etc cosas manualmente en ambas máquinas. A y B no están conectados a Internet al mismo tiempo, por lo que no se pueden sincronizar directamente.

El servidor C siempre está encendido y conectado (y es gratuito y bastante seguro). Tiene git instalado, pero no tengo derechos de administrador, por lo que no puedo instalar git-annex.

Mi pregunta: ¿Puedo usar el servidor C como centro central para enviar y extraer actualizaciones de git-annex tanto de A como de B, sin tener que instalar git-annex y todas las dependencias de haskell ghc en C?

Intenté usar C con "directorio" o "rsync"controles remotos especiales, pero esto parece contener solo archivos, no el resto de lo que se necesita para actualizar A y B después de empujar/tirar.

¡Cualquier pista sería muy apreciada!

Respuesta1

Con acceso git y rsync al mismo servidor, puede usar ese servidor para almacenar tanto el historial (mediante acceso git) como el almacén clave-valor anexo (mediante acceso rsync). Estos también podrían desacoplarse y almacenarse en cualquier cantidad de servidores diferentes.

Parece que ya has leído sobre todas las herramientas que necesitarás. Básicamente, terminarás con 2 controles remotos separados, ambos apuntando a diferentes ubicaciones en el servidor-c. El primer control remoto (server-c) es un control remoto de git normal para sincronizar su historial y cualquier cosa que se registre directamente en el repositorio de git. El segundo control remoto es un control remoto especial anexo.

[remote "server-c"]
    url = [email protected]:/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 = ...

Deberías poder configurar esto con algo como:

git remote add server-c [email protected]:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none

Esto debería brindarle la funcionalidad básica que está buscando. El único inconveniente es que tienes 2 nombres remotos diferentes que en realidad apuntan al mismo servidor. En particular, solo debe recordar usar el control remoto especial (server-c-rsync) cuando use los argumentos --to= o --from= de get, copy y move.

Es posible que apunte un único control remoto a ambas ubicaciones, sin embargo, no estoy seguro de si esto es realmente compatible. Los siguientes comandos parecen crear un archivo .git/config sensato.

git init
git annex init "test"
git remote add server-c [email protected]:/path/to/repo.git
git annex initremote server-c type=rsync rsyncurl=example.com:/rsync/user encryption=none

Para mí, esto da como resultado un único control remoto en .git/config con una url= (para las operaciones normales de git) y un anexo-rsyncurl=. Sin embargo, no he probado esto más para asegurarme de que git anexo ignore la URL y use solo la entrada anexo-rsyncurl cuando opera con archivos anexos.

información relacionada