Soumis par kacy le
J'ai eu a faire une migration svn-to-git. J'ai été bloqué par de mauvaises révisions presentes dans le repo SVN qui m'enpechaient de faire mon git svn clone. J'ai vu qu'il était possible de bypasser les mauvaises révisions svn en utilisant l'utilitaire svnadmin.
Du coup , j'ai écrit un petit script vite fait (crado mais ça fait le job :) ) pour lancer le dump du repo sans avoir à intervenir lorsqu'une révision était moisie :
#!/bin/sh echo "removing initial revision dump" rm -f /home/data01/svn-dumpfile-20190517-1 if ! [ -f /home/data01/svn-dumpfile-20190517 ] ; then echo "dumping first" /usr/bin/svnadmin dump /home/data01/repository > /home/data01/svn-dumpfile-20190517 2> ./dump-start.log fi echo "copie du dump" cp /home/data01/svn-dumpfile-20190517 /home/data01/svn-dumpfile-20190517-1 counter=1 counter=$(tail ./dump-start.log |grep "Dumped revision" | tail -1 | awk -F "Dumped revision " '{print $2}' | awk -F "." '{print $1}') ((counter++)) echo "last buggy revision is : $counter" echo "incrementing next revision" ((counter++)) echo "removing last dump.log" echo > ./dump.log res=1 echo "ready to start !?" read toto #42762 while [ "$counter" -le 42700 ] || [ "$res" -eq 1 ] do echo "dumping from revision $counter" /usr/bin/svnadmin dump --incremental -r $counter:HEAD /home/data01/repository >> /home/data01/svn-dumpfile-20190517-1 2>>./dump.log res=$? if [ "$res" -ne 0 ] ; then newcounter=$(tail -20 ./dump.log |grep "Dumped revision" | tail -1 | awk -F "Dumped revision " '{print $2}' | awk -F "." '{print $1}') if [ "" != "$newcounter" ] && [ $newcounter -gt $counter ] ; then echo "found newcounter=$newcounter" counter=$newcounter fi ((counter++)) echo "buggy revision is : $counter" else echo "end of the dump !" continue fi echo "skipping revision $counter" ((counter++)) done
C'est un script vite fait qui fait le job comme expliqué, je vous laisse le soin de mettre au propre si nécessaire ;)