Hospedando um anexo Git em um servidor sem anexo git instalado

Hospedando um anexo Git em um servidor sem anexo git instalado

As máquinas A e B hospedam um servidor comumanexo gitrepositório. Ambos têm oanexo gitprograma instalado e eu edito/confirmo/etc manualmente em ambas as máquinas. A e B não estão conectados à Internet ao mesmo tempo, portanto não podem ser sincronizados diretamente.

O servidor C está sempre ligado e conectado (e é gratuito e bastante seguro). Ele tem o git instalado, mas não tenho direitos de administrador, então não consigo instalar o git-annex.

Minha pergunta: Posso usar o servidor C como um hub central para enviar e extrair atualizações do git-annex de A e B, sem precisar instalar o git-annex e todas as dependências do haskell ghc em C?

Tentei usar C com “diretório” ou “rsync”controles remotos especiais, mas isso parece conter apenas arquivos, não o restante do que é necessário para atualizar A e B após push/pull.

Qualquer dica seria muito apreciada!

Responder1

Com acesso git e rsync ao mesmo servidor, você pode usar esse servidor para armazenar o histórico (via acesso git) e o armazenamento de valores-chave anexo (via acesso rsync). Eles também podem ser dissociados e armazenados em qualquer número de servidores diferentes.

Parece que você já leu sobre todas as ferramentas necessárias. Basicamente, você terá dois controles remotos separados, ambos apontando para locais diferentes no servidor-c. O primeiro controle remoto (server-c) é um controle remoto git normal para sincronizar seu histórico e qualquer coisa que seja verificada diretamente no repositório git. O segundo controle remoto é um controle 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 = ...

Você deve ser capaz de configurar isso com 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

Isso deve fornecer a funcionalidade básica que você está procurando. A única desvantagem é que você tem dois nomes remotos diferentes que realmente apontam para o mesmo servidor. Em particular, você só precisa se lembrar de usar o controle remoto especial (server-c-rsync) ao usar os argumentos --to= ou --from= de get, copy e move.

Pode ser possível apontar um único controle remoto para ambos os locais, mas não tenho certeza se isso é realmente compatível. Os comandos a seguir parecem criar um .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 mim, isso resulta em um único controle remoto em .git/config com url= (para as operações normais do git) e um anexo-rsyncurl=. No entanto, não testei mais isso para garantir que git anexo ignore o URL e use apenas a entrada annex-rsyncurl ao operar com arquivos anexados.

informação relacionada