Pour rétablir l'état précédent d'un dossier particulier dans SVN, j'utilise actuellement les éléments suivants:
svn rm folder
svn commit -m 'removed folder to revert to previous version'
svn co http://pathto/repo/folder@268
cd folder
rm -rf .svn //recursively if many folders
svn add folder
svn commit -am 'reverted to the previous version'
Cela semble trop compliqué pour ce qui devrait être un cas d'utilisation assez courant. Je dois le faire mal. Sinon, comment pouvez-vous le faire?
Pourquoi ne pas utiliser svn merge
?
En supposant que vous souhaitiez revenir à la version 268 de la version actuelle HEAD (la dernière version validée):
cd folder
svn up
svn merge -r HEAD:268 .
Ensuite, résolvez tous les conflits manuellement (il ne devrait rien y avoir s'il n'y a pas de changement local) et:
svn commit -m "- reverted to revision 268"
Pour revenir à une modification unique (effectuée dans la révision 666, par exemple):
cd folder
svn merge -c -666 .
Pour annuler les modifications locales (non encore engagées):
cd folder
svn revert -R .
Vous pouvez utiliser svn merge
pour cette tâche, voir http://svnbook.red-bean.com/fr/1.1/ch04s04.html#svn-ch-4-sect-4.2 pour un exemple
Pourquoi ne pas utiliser 'svn merge'? C'est pourquoi: "Alors résolvez tous les conflits manuellement [..]"
Si je connais le "dossier" de la révision 268 contenant les données cohérentes que je voudrais approfondir, pourquoi créer automatiquement une fusion avec des données potentiellement incohérentes uniquement pour supprimer manuellement ces modifications ultérieurement. Il est sujet aux erreurs et va à l'encontre de l'objectif de mon outil de gestion de la configuration.
C'est à dire. Je préférerais la recette de la demande initiale avec une amélioration mineure. Si vous utilisez 'svn export' pour obtenir l'ancienne révision, vous n'avez pas à supprimer les fichiers .svn:
svn rm folder
svn commit -m 'removed folder to revert to previous version' .
svn export -r 268 http://pathto/repo/folder
svn add folder
svn commit -m 'reverted to the previous version' folder
vous pouvez aussi utiliser
svn revert folder/*
qui retournera tout le fichier sous folder