Oh, pour l'amour de Pete! Le . réponses à ce jour ont été - au mieux - trompeur
De votre question, il semble que vous essayiez quelque chose comme ceci:
svn update -r8
# ok, I can see the deleted file now
svn commit -m "I want r8 to be newest"
Sauf que ne fonctionnera pas il n'y a aucune modification. Vous pouvez mettre à jour vers des révisions plus anciennes, mais vous ne pouvez pas y apporter de changements. Vous ne pouvez pas changer le passé. Vous ne pouvez commettre une nouvelle révision qu'en annulant les dégâts.
Ok, supposons que votre référentiel soit à svn: // repo. Voici un exemple simplifié dans lequel le tronc du dossier contient deux fichiers, "a" et "b". Appelons cette révision 8 (r8).
trunk # working copy of svn://repo/trunk
a
b
J.R Hacker, glisse et supprime accidentellement b:
svn rm b
svn commit -m "oops"
Appelons le résultat de ce commit r9.
Alors, la prochaine fois que vous mettez à jour à partir du référentiel,
svn update
trunk
a
b disparaît! Panique? Non. Ceci est un système de contrôle de version. Tout ce qui a été vérifié peut être restauré. Voici deux possibilités:
Juste copie le fichier à partir d'une version plus ancienne, à savoir la dernière révision où il existait encore: 8.
svn cp svn://repo/trunk/[email protected] .
svn commit -m "restored b from revision 8"
La solution plus générale est d'utiliser une fusion. Vous pouvez utiliser cette technique pour annuler plus qu'une simple suppression.
svn merge -r9:8 . .
svn commit -m "reverted the changes made in revision 8"
La façon de lire cette fusion est la suivante:
figure d'abord quels changements doivent être faits pour obtenir de r9 (retour) à r8 du dossier référentiel (svn: // repo/tronc) associé au répertoire courant (le premier "."). Maintenant, effectuez ces modifications sur la copie de travail dans le répertoire en cours (le second ".").
Il y a une syntaxe plus pratique si vous êtes juste revenir un seul changement:
svn merge -c-8 . . #note the minus sign before the 8
Si vous ne l'utilisez svn de la ligne de commande, fouillez votre outil un peu, vous êtes sûr de trouver quelque chose. TortoiseSVN, par exemple a le pratique "annuler les modifications de cette révision" lorsque vous ouvrez un journal à partir d'une copie de travail.
Je ne comprends pas très bien votre question, mais avant d'essayer quoi que ce soit, faites une sauvegarde rapide du répertoire avec la révision locale. – Elijah
désolé, corrigé une phrase. devrait faire plus de sens maintenant. –