web-dev-qa-db-fra.com

Revenir un dossier svn à une révision précédente

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?

45
Lakshman Prasad

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 .
89
Jacek Konieczny

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

1
Thomas Schaub

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
1
user2451680

vous pouvez aussi utiliser

svn revert folder/*

qui retournera tout le fichier sous folder

0
Sheetal T