¿Pueden funcionar bien GIT, Mercurial, SVN u otras herramientas de control de versiones cuando el árbol del proyecto tiene archivos binarios?

A veces, nuestro árbol de proyectos puede tener archivos binarios, como jpg, png, doc, xls o pdf. ¿Pueden GIT, Mercurial, SVN u otras herramientas hacer un buen trabajo cuando solo se cambia parte de un archivo binario?

Por ejemplo, si la especificación está escrita en .doc y es parte del repositorio, entonces si es de 4 MB y se edita 100 veces, pero solo para 1 o 2 líneas, y se registra 100 veces durante el año, entonces es de 400 MB .

Si se trata de 100 archivos .doc y .xls diferentes, entonces es de 40 GB ... no es un tamaño que sea fácil de administrar.

He probado GIT y Mercurial y veo que ambos parecen agregar un gran tamaño de datos incluso cuando se cambia 1 línea en un .doc o .pdf. ¿Hay alguna otra forma dentro de GIT o Mercurial o SVN que pueda hacer el trabajo?