J'ai réussi à me tirer une balle dans le pied ce matin en faisant ce qui suit:
- J'ai commencé à travailler sur une modification de mon projet
- J'ai apporté un tas de modifications à un tas de fichiers
- Je me suis rendu compte que mon approche était complètement fausse et que je devais recommencer
- cd au niveau supérieur de mon projet et a effectué un "svn --recursive revert". pour restaurer mon bac à sable local à son état d'avant les modifications.
- J'ai hurlé d'horreur quand j'ai réalisé qu'il y avait eu un certain nombre d'autres changements en suspens dans mon bac à sable local, et je venais de les effacer tous. (le serveur svn était en panne vendredi dernier, je n'avais donc pas pu les enregistrer et je les avais oubliés pendant le week-end)
Heureusement dans ce cas, j'avais fait un "svn diff> temp.txt" avant de quitter le travail vendredi, et le fichier temp.txt était toujours sur mon disque dur, donc j'ai pu alimenter ce fichier dans "patch" et récupérer mon modifications perdues.
Mais pour ma future référence (c'est-à-dire la prochaine fois que je ferai la même erreur stupide) ... y a-t-il un moyen de dire à svn d'annuler un "svn revert"? Est-ce que svn conserve une sauvegarde des diffs locaux / non enregistrés n'importe où?
Réponses:
Non, (absolument) NON .
Si vous dites à Subversion qu'il doit rétablir un fichier, toutes les modifications ont disparu par le vent.
Seule votre mémoire peut les récupérer.
Exception: les nouveaux fichiers que vous aviez ajoutés perdront uniquement leur statut "ajouté", mais le fichier restera dans ce répertoire, seul le statut est inconnu ("?")
Exception de plate-forme / logiciel: en utilisant TortoiseSVN sous Windows, Revert lance d'abord les fichiers dans la corbeille, puis les rétablit. Vous pouvez fouiller dans la corbeille pour récupérer les fichiers.
la source
Il existe une solution ... allez dans votre corbeille vous y trouverez la dernière version du fichier supprimé. Tortue "jette" dans la corbeille tous les fichiers qu'elle retourne.
la source
Pas vraiment spécifique à Subversion, mais si vous travaillez avec Eclipse, vous pouvez tenter votre chance dans l'histoire locale.
Maintenant, quelque chose d'un peu plus spécifique à Subversion: si vous ne voulez pas créer de branche pour chaque changement que vous faites, vous pouvez garder quelques troncs vérifiés localement (trunk-modif-1, trunk-modif-2 .. .). Chaque "modification" se fait sur une arborescence séparée et il suffit de garder une liste dont les extractions correspondent à quelle modification.
Ou vous pouvez utiliser Git localement mais je ne l'ai jamais essayé.
la source
Récemment fait cette erreur de ne pas commettre de nouveaux changements de fichiers (environ 10) sur SVN et ils ont tous disparu à cause de ma stupide erreur. Mais ce qui m'a sauvé, c'est l'option "Restaurer les versions précédentes" de la fenêtre dans le menu contextuel. Ouf, c'était un soulagement et une leçon apprise.
la source
Vous ne pouvez pas récupérer les fichiers si vous utilisez le client de ligne de commande svn .
Mais vous pouvez les récupérer si vous utilisez TortoiseSVN comme client svn. TortoiseSVN les déplacera automatiquement dans votre corbeille. Vous pouvez les restaurer à partir de là après un retour accidentel.
C'est une option configurable dans TortoiseSVN. C'est sous Paramètres -> Boîte de dialogue 1 -> Utiliser la corbeille lors du retour.
Par défaut, il est coché, ce qui signifie que les fichiers sont déplacés vers la corbeille. Si vous le souhaitez (la plupart du temps, vous ne vous souciez pas de désactiver cette option. Si vous avez une raison, veuillez me le faire savoir également)
la source
Si vous utilisez InteliJ, vous êtes une personne chanceuse. Dans le menu supérieur, vous avez une option de contrôle de version, et en dessous, vous trouverez l'option d'historique local, où vous trouverez tout l'historique du fichier sélectionné, y compris toutes les opérations que vous avez effectuées avec ce fichier (mise à jour, validation, restauration).
Bonne chance, Arkde
la source
De plus, si vous avez rétabli votre code .NET (fichiers .cs, etc.) et que vous avez construit votre application avant de revenir, mais après avoir apporté des modifications, vous pouvez récupérer les modifications du fichier d'assemblage à l'aide de l'un des outils de réflecteur pour afficher le code.
la source
J'ai annulé la solution (Visual Studio + AnkhSVN) et j'ai perdu les modifications de quelques fichiers. Je ne trouve pas le fichier dans la corbeille.
MAIS: j'ai récupéré mes fichiers perdus avec Handy Recovery, c'est-à-dire que SVN supprime simplement mes fichiers lors du retour.
Utilisez n'importe quel logiciel de récupération de données pour récupérer les fichiers restaurés (comme l'essai Handy Recovery )
la source
J'ai eu beaucoup de chance de trouver un journal des modifications locales du fichier (Révisions locales) dans le navigateur d'historique d'Eclipse. J'avais inspecté les différences une par une et j'avais fait quelques sauvegardes sur le fichier avant l'écrasement.
la source
Non, SVN ne garde pas de journal ni de sauvegarde (bien qu'il existe une solution pour TortoiseSVN indiquée dans les autres réponses).
Mais au cas où quelqu'un parcourt les réponses et n'a pas remarqué ce commentaire dans la question du PO:
"Heureusement dans ce cas, j'avais fait un" svn diff> temp.txt "avant de quitter le travail vendredi, et le fichier temp.txt était toujours sur mon disque dur, donc j'ai pu alimenter ce fichier dans" patch "et récupérer mes changements perdus. "
J'imagine que c'est un paradigme courant de faire «svn diff» AVANT de faire un «svn revert». Si vous prenez l'habitude de faire cela, même si le diff est juste renvoyé au terminal, vous avez au moins une possibilité pour récupérer vos modifications perdues.
la source