Bonjour,
Je travaille sur un projet dont les versions sont gérées avec SVN.
Nous avons opté pour l'architecture suivante :
TRUNK = Branche de développement (correction de bugs, évolutions mineures)
Branche "REC" = Branche de recette (utilisé uniquement pour générer des livrables)
Branches X correspondant aux différents lots itératifs (évolutions majeures)
J'ai donc suivi le cycle habituel de développement :
- Développements et tests unitaires dans une branche dédiée au lot sur lequel je travaillais
- Merge dans le tronc une fois mes développements terminés ainsi que mes tests unitaires
- Contrôle qualité client sur le trunk, avec corrections en mode itératif directement dans le tronc
Et là, le drame : le client, par erreur ma dit il y a deux jours "ok, c'est validé tu peux pousser en recette".
Donc gros merge sur la branche de recette.
Sauf qu'au moment de livrer, le client se rend compte qu'il est allé un peu vite en besogne : il ne veut surtout pas mes développements récents, en revanche, les nombreuses corrections de bugs sans rapport avec le projet, il les veut, car il y a des bugs bloquants en production, avec une livraison nécessaire rapidement, sans attendre la validation complète des nouveaux devs.
Habituellement, quand on se rend compte immédiatement de l'erreur, je copie tout mon dossier de recette dans un nouveau dossier "nouveau".
Avec SVN, je remonte à la version de recette avant le merge. Je la sauverade dans un dossier "ancien".
Puis je repasse à la dernière version.
J'écrase avec la sauvegarde "ancien" et je commit.
Ensuite j'écrase avec la sauvegarde "nouveau" et je crée alors un fichier patch contenant l'ensemble des différences.
Ensuite je fais un revert de sources.
Ensuite, une fois le feu vert, j'ai juste à réappliquer le fichier patch.
Ok, ça c'est dans le monde des bisounours.
Sauf que là, entre temps, j'ai fait une trentaine de commit sur la branche de recette.
Je voudrais donc :
- parcourir le log et noter l'ensemble des versions mergées depuis mon erreur
- retourner à la version avant mon merge abusif
- dire à SVN que tout ce qui c'est passé après, il faut oublier, c'est une erreur
En fait, je veux pouvoir retourner dans le temps, et merger de nouveau toutes mes modifications sauf la grosse mise à jour qui correspond à mes développements.
Une idée de comment faire ?
J'utilise Tortoise SVN. Mais s'il faut passer par des lignes de commande, je peux.
J'ai accès au serveur, donc si besoin de hooks, c'est possible aussi.
Merci d'avance, car là j'ai passé une heure à retourner les sources du programme dans tous les sens, et à part faire de la merde, j'arrive pas à grand chose...
Partager