As ferramentas de controle de versão GIT, Mercurial, SVN ou outras podem funcionar bem quando a árvore do projeto possui arquivos binários?

Às vezes, nossa árvore de projetos pode ter arquivos binários, como jpg, png, doc, xls ou pdf. O GIT, Mercurial, SVN ou outras ferramentas podem fazer um bom trabalho quando apenas parte de um arquivo binário é alterada?

Por exemplo, se a especificação for escrita em .doc e fizer parte do repositório, se tiver 4 MB e editada 100 vezes, mas apenas para 1 ou 2 linhas, e registrada 100 vezes durante o ano, será de 400 MB .

Se houver 100 arquivos .doc e .xls diferentes, serão 40 GB ... não um tamanho fácil de gerenciar.

Eu tentei o GIT e o Mercurial e vejo que ambos parecem adicionar um grande tamanho de dados, mesmo quando uma linha é alterada em .doc ou .pdf. Existe outra maneira dentro do GIT ou Mercurial ou SVN que pode fazer o trabalho?