web-dev-qa-db-fra.com

Voulez-vous supprimer les révisions de mon référentiel SVN

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?

33
Chris Barnhill

Peut-être que ce lien vous aide:

http://www.sampablokuper.com/2009/03/27/svn-revert-to-revision/

Citation:

  1. 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).

  2. 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.

  3. 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 par svn status -v).

  4. exécutez svn merge -rXX:YYXX est le numéro que vous avez obtenu à l'étape précédente et YY est le numéro de la révision à laquelle vous voulez revenir.

  5. 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 un svn del [filename] sur chacun d’eux.

  6. 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!

12
Felix

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
71
martin

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.

  1. Vérifiez le HEAD du référentiel pour le répertoire à partir duquel vous souhaitez annuler la révision.
  2. Chargez la vue "Show Log" dans TortoiseSVN pour le répertoire de niveau le plus élevé que vous souhaitez restaurer (par exemple, "Trunk").
  3. Cliquez avec le bouton droit sur la révision que vous souhaitez supprimer. REMARQUE: il s'agit de la révision que vous souhaitez supprimer et non de celle à laquelle vous souhaitez revenir.
  4. Sélectionnez "Annuler les modifications de cette révision".
  5. Cliquez sur "Oui" à l'invite.
  6. Mettez à jour la caisse comme d'habitude, mais sur "HEAD".
  7. Engagez-le en arrière.

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.

5
Martin

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.

4
Bac From Vietnam

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 
 
3
Anton Golikhoff

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"

0
Mohd Ikram