Eu li em várias discussões aqui e no SO que os repositórios DVCS usam aproximadamente o mesmo ou menos espaço que suas contrapartes centralizadas. Eu posso ter perdido, mas não encontrei uma boa explicação sobre o motivo. Ninguem sabe?
Eu li em várias discussões aqui e no SO que os repositórios DVCS usam aproximadamente o mesmo ou menos espaço que suas contrapartes centralizadas. Eu posso ter perdido, mas não encontrei uma boa explicação sobre o motivo. Ninguem sabe?
Respostas:
De minha própria experiência, as seguintes afirmações são verdadeiras:
Se você comparar o local do checkout (que é um repositório em si com o Git), a história é totalmente diferente:
Se você comparar a quantidade de bytes que precisa baixar ou enviar, será diferente novamente.
Portanto, no final, você compara maçãs com laranjas e, dependendo do que você quer fazer com o Subversion ou Git, o resultado pode ser diferente.
O @jk perguntou sobre cópias completas ou diferenças binárias, e eu não pude responder a essa pergunta. Perguntei a Matthew McCullough, que deu um workshop sobre Git recentemente em Jax 2012 (que visitei). Ele reservou um tempo (muito obrigado a ele) para explicar com uma essência detalhada o trabalho interno do Git. Então, sim, existe uma compactação trabalhando lá (e farei um experimento com um arquivo do Microsoft Office e o compararei com a essência dele), mas não, a compactação é feita em todo o arquivo. Citando sua essência:
Objetos soltos são gravados no formato compactado, mas não delta, no momento de cada confirmação.
git gc
ou muitos objetos soltos se acumulam, ele encontra bons candidatos para compactá-los com delta (o git pode ser diferente da versão anterior), armazena os deltas em um "pacote" e remove os objetos soltos.