J'ai utilisé la réponse de Wim Coenen et j'ai écrit le script suivant pour créer une liste de toutes les révisions:
getSvnRevs() {
cd "$1"
wcver="$(svnversion)"
[ -n "$wcver" ] || panic "Unable to get version for $wcdir"
echo "$1: $wcver"
svn propget svn:externals -R | while read a b c d e; do
[ -n "$a" ] || continue
if [ "$b" = "-" ]; then
wcparent="$a"
wcdir="$wcparent/$c"
[ -z "$e" ] || panic "Invalid format #1"
else
[ -n "$wcparent" ] || panic "Invalid format #2"
wcdir="$wcparent/$a"
[ -z "$c" ] || panic "Invalid format #3"
fi
[ -d "$wcdir" ] || panic "Invalid directory: $wcdir"
wcver="$(svnversion "$wcdir")"
[ -n "$wcver" ] || panic "Unable to get version for $wcdir"
echo "$1/$wcdir: $wcver"
done
}
Heureusement, je n'ai pas d'externes imbriqués, donc je n'ai pas eu à tester cela et je suppose que cela ne fonctionnerait pas. Mais si vous en avez besoin, il suffit probablement d'appeler cette fonction de manière récursive. De plus, je n'ai jamais testé avec des noms de fichiers qui doivent s'échapper. Cela ne fonctionnera probablement pas alors.
AVERTISSEMENT: Je sais que la question initiale concernait Windows, et le script shell ne fonctionnera pas là-bas à moins que vous n'utilisiez cygwin ou similaire.