Vous pouvez utiliser le mode XML de la commande liste Subversion et somme sur la taille du fichier .
Sous 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'une caisse svn réelle est essentiellement deux fois plus que calculé ci-dessus parce que dans la caisse que vous avez les fichiers dans le répertoire de travail et dans la révision cache sous les répertoires/répertoires spéciaux .svn
.
Sinon, si vous n'êtes pas trop préoccupé par l'utilisation de la RAM que vous utilisez 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 générer une utilisation importante de la mémoire, car des outils tels que xmllint (qui utilise libxml2) construisent souvent l'intégralité de l'arborescence de documents en mémoire avant de commencer à sommer les éléments.
Semble fonctionner correctement, mais prend un temps terrible et aucune idée de la quantité de trafic qui engloutit déjà. Dans PowerShell, c'est aussi simple que: '([xml] (svn list --xml --recursive https: // svn/repo/chemin)) .lists.list.entry | mesure -sum size' – Joey
Est-ce que ça marche aussi avec les externes? – cetnar
Non. Les externes sont un tout autre jeu de balle. –