Hospedando um Git Annex em um servidor sem git-annex instalado

8

As máquinas A e B hospedam um repositório comum git anexo . Ambos têm o programa git-annex instalado e eu edito manualmente / commit / etc coisas em ambas as máquinas. A & B não está conectado à internet ao mesmo tempo, então eles não podem ser sincronizados juntos diretamente.

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

Minha pergunta: Posso usar o Servidor C como um hub central para empurrar e puxar atualizações de git-annex de A e B, sem ter que instalar o git-annex e todas as dependências haskell ghc no C?

Eu tentei usar o C com "diretório" ou "rsync" controles remotos especiais , mas isso parece conter apenas arquivos , não o resto do que é necessário para atualizar A e B após push / pulls.

Qualquer sugestão seria muito apreciada!

    
por Vincent 01.01.2013 / 16:40

1 resposta

6

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

Parece que você já leu todas as ferramentas necessárias. Basicamente, você vai acabar com dois controles remotos separados, ambos apontando para diferentes locais no servidor-c. O primeiro controle remoto (server-c) é um controle remoto regular para sincronizar seu histórico e qualquer coisa que é verificada diretamente no repositório git. O segundo controle remoto é um controle remoto especial.

[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 poder 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 2 nomes remotos diferentes que realmente apontam para o mesmo servidor. Em particular, você só precisa lembrar de usar o controle remoto especial (server-c-rsync) ao usar os argumentos --to = ou --from = de obter, copiar e mover.

Pode ser possível apontar um único controle remoto para ambos os locais, mas não tenho certeza se isso é realmente suportado. Os seguintes comandos aparecem para criar um .git / config sensível.

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 um url = (para as operações normais do git) e um anexo-rsyncurl =. No entanto, eu não testei mais isso para garantir que o anexo git ignore o URL e use apenas a entrada annex-rsyncurl quando estiver operando com arquivos em anexo.

    
por 02.01.2013 / 07:14

Tags