Vous pouvez utiliser le mode XML de la commande Subversion list et additionner la taille du fichier.
Sur Linux/UNIX :
$ svn list --xml --recursive http://svn.example.org/module/trunk | awk -F'[><]' \
'/^ *<size>/ {s+=$3} END {printf("%.1f GiB\n", s/1024/1024/1024)}'
Notez que l'utilisation du disque d'un checkout svn réel est en fait deux fois plus importante que celle calculée ci-dessus parce que dans le checkout, vous avez les fichiers dans le répertoire de travail et dans le cache de révision sous la balise .svn
répertoire(s) spécial(s).
Sinon, si vous n'êtes pas trop préoccupé par l'utilisation de la RAM, vous pouvez utiliser une expression XPath pour calculer la somme, par exemple :
$ printf '%.1f GiB\n' $(svn list --xml --recursive \
http://svn.example.org/module/trunk | xmlstarlet sel -t -v \
'sum(/lists/list/entry/size) div 1024 div 1024 div 1024')
Ou :
$ printf '%.1f GiB\n' $(svn list --xml --recursive \
http://svn.example.org/module/trunk | xmllint --xpath \
'sum(/lists/list/entry/size) div 1024 div 1024 div 1024' -)
L'utilisation d'un tel processeur XPath sur un référentiel contenant de nombreux fichiers peut entraîner une utilisation élevée de la mémoire, car des outils comme xmllint (qui utilise libxml2) construisent souvent l'arbre complet du document en mémoire avant de commencer à additionner les éléments.