Les dernières révisions de mon dépôt de code ont été corrompues et ont déstabilisé mon application. Je veux revenir à une révision antérieure.
Mais je ne veux pas simplement utiliser "revenir" sur ma copie de travail; En fait, je souhaite supprimer ma révision principale et plusieurs versions antérieures de mon référentiel, ce qui "rétablit" mon référentiel en une révision antérieure, qui deviendrait la révision principale. Quelqu'un sait comment je ferais ça?
Peut-être que ce lien vous aide:
http://www.sampablokuper.com/2009/03/27/svn-revert-to-revision/
Citation:
Accédez au répertoire supérieur de votre copie de travail (en supposant que vous souhaitiez annuler l'intégralité de la copie de travail).
lancez
svn revert
pour rétablir les fichiers de votre copie de travail dans l'état dans lequel ils se trouvaient lors de la dernière validation/extraction.lancez
svn status -v
pour voir à quel numéro de révision correspond votre copie de travail (c'est le numéro de révision le plus élevé dans la liste produite parsvn status -v
).exécutez
svn merge -rXX:YY
oùXX
est le numéro que vous avez obtenu à l'étape précédente etYY
est le numéro de la révision à laquelle vous voulez revenir.Terminé! La seule exception à cette règle est que les fichiers de votre copie de travail qui n'existaient pas lors de la révision
YY
ont toujours été conservés, car par défaut, svn ne supprime pas les éléments. Si vous souhaitez vous en débarrasser, exécutez unsvn del [filename]
sur chacun d’eux.Bien joué! Jouez maintenant avec votre copie de travail comme si toutes ces modifications intermédiaires ne s'étaient jamais produites. Et lorsque vous êtes prêt à engager vos efforts, utilisez simplement svn commit comme d'habitude!
Cela a fonctionné pour moi. Étant donné que vous avez la révision 1234 en tant que HEAD et que vous souhaitez annuler les trois derniers commits:
svnadmin create newrepo
svnadmin dump -r 0:1231 repo | svnadmin load newrepo
mv repo oldrepo
mv newrepo repo
Je sais que c'est une vieille question, cependant, je viens de trouver comment faire cela avec Windows/TortoiseSVN.
Comme suggéré, vous ne pouvez pas "supprimer" une révision, mais vous pouvez créer une révision plus récente, identique à la révision à laquelle vous souhaitez revenir.
Vous devrez ensuite aller voir toutes les personnes qui l'ont vérifié et les faire mettre à jour et assurez-vous de supprimer tous les nouveaux fichiers.
En outre, vous devez vous assurer que tout le monde sait quelle révision a été effectuée et éventuellement mettre à jour la description.
Vous pouvez utiliser dump/load à cette fin.
Vous pouvez également utiliser svnsync pour faire une sauvegarde sur une révision.
Si vous avez un grand référentiel, cela prend du temps.
Pour moi (VisualSVN, 30-HEAD) fonctionne comme ceci:
del C:\Référentiels\MyRepo\revs\0\30 del C:\Référentiels\MyRepo\revs\0\29 del C:\Référentiels\MyRepo\revs\0\28 Del C:\Repositories\MyRepo\revprops\0\30 Del C:\Repositories\MyRepo\revprops\0\29 Del C:\Repositories\MyRepo\revprops\0\28 Echo 27> C:\Repositories\MyRepo\db\current
Accédez au terminal et accédez au répertoire svn: tapez maintenant
svn update -r "numéro de révision que vous souhaitez rétablir"