Quais são as implicações de um clone git compartilhado se o repositório de origem for remoto?

Quais são as implicações de um clone git compartilhado se o repositório de origem for remoto?

Portanto, o repositório compartilhado git parece ser mais ou menos perfeito para manter sincronizadas pastas com grandes blobs. Tenho cerca de 700 GB de fotos e vídeos que desejo distribuir em meus computadores, mas usar o git sem quaisquer outras adições resulta em uma enorme sobrecarga de uso do disco que não é realmente necessária.

Agora, clonar com --shared (ou -s) me dá um repositório git sem armazenamento de objeto local (se entendi corretamente), que é basicamente o que eu preciso. Porém, a documentação começa com "Quando o repositório a ser clonado está na máquina local...". clone -s funciona tão bem via SSH, mas isso me deixa imaginando o que acontece se o repositório a ser clonado fornãona máquina local. Como a documentação de -s começa com essa frase, sinto que todo o caso não foi abordado. Há algo que eu preciso observar, exceto a exclusão de commits no lado remoto que pode resultar na coleta de lixo de certos objetos (que ainda podem estar em uso localmente)? (o que não acontecerá de qualquer maneira, pois quero usar repositórios vazios no servidor)

Responder1

Eu adoro o git, mas infelizmente o git não é a ferramenta certa para essa tarefa.

O Git foi projetado para manter o histórico de alterações de maneira muito eficiente, principalmente para repositórios de conteúdo de texto. Embora o git suporte a manutenção de binários, ele terá que mantê-los para sempre no histórico para que você possa fazer check-out de qualquer revisão, o que é muito caro em termos de espaço em disco.

Além disso, supondo que seus binários não sejam compactáveis ​​(fotos, filmes, músicas, etc.), o tamanho do armazenamento de objetos git será aproximadamente o mesmo do checkout da árvore. Em outras palavras, para 700 GB de arquivos originais, o armazenamento de objetos ( .gitdiretório) consumirá a mesma quantidade e ainda mais quando você começar a confirmar - adicionando e removendo conteúdo.

Você pode usar o chamado clone superficial, que mantém apenas a última revisão do objeto no armazenamento de objetos, mas os repositórios superficiais só podem ser clonados - não confirmados. Neste caso, o repositório mestre git deve ser normal (não superficial) e ainda será grande, porém todos os clones superficiais terão um tamanho razoável.

Você provavelmente ficará melhor mantendo um esquema de sincronização mais simples, como o rsync. No entanto, nesse caso você perde a capacidade de revisar o histórico - não existe almoço grátis :(

Responder2

Sei que isso não está realmente respondendo à sua pergunta, mas... não seriasincronizar novamenteseria muito mais fácil manter duas pastas sincronizadas?

informação relacionada