113 votes

Quelle est la bonne façon de restaurer un fichier supprimé svn ?

J'ai supprimé un fichier à partir d'une mise en pension et vous souhaitez le remettre en place. Le mieux que je peux comprendre:

  • mise à jour de la révision avant de le supprimer
  • copiez les fichiers ailleurs
  • mise à jour à la tête de
  • copiez les fichiers de retour
  • ajouter
  • s'engager

Qui sent mauvais et il perd toute l'histoire de démarrer. Il y a obtenu d'être une meilleure façon de le faire. J'ai déjà regardé dans Le SVN Livre mais ne l'ai pas trouvé et je suis maintenant à la recherche vers le bas le SVN liste des tags.

169voto

tukushan Points 2574

Le problème avec un svn merge comme suggéré par Sean Lumineux est qui est réintroduit autres changements apportés à la même révision que la suppression. Un svn copy est un plus ciblée opération qui touchera uniquement les fichiers supprimés.

À l'aide de Tortoise SVN, vous pouvez ressusciter un fichier qui a été supprimé à partir de votre copie de travail de répertoire et de partir plus tard SVN révisions, par l'intermédiaire d'un svn copy comme suit:

  • Accédez à la copie de travail dossier qui contenait auparavant le fichier.
  • Clic droit sur le dossier dans l'Explorateur, allez dans le menu TortoiseSVN -> Afficher le journal.
  • Clic droit sur le numéro de révision juste avant la révision qui a supprimé le fichier et sélectionnez "Parcourir référentiel".
  • Clic droit sur le fichier supprimé et sélectionnez "Copie de copie de travail..." et enregistrez.

Le fichier supprimé sera présent dans la copie de travail d'un dossier. Ajouter de nouveau de retour à SVN, clic droit sur le fichier restauré et sélectionnez SVN Commit.

NB: Cette méthode permettra de préserver l'histoire précédente du fichier restauré, mais pour voir l'avant de l'histoire dans le TortoiseSVN journal, vous devez assurez-vous que "Arrêt sur copier/renommer" n'est pas cochée dans le Journal des messages de boîte de dialogue.

56voto

Sean Bright Points 39480

L'utilisation de svn merge:

svn merge -c -[rev num that deleted the file] http://<path to repository>

Donc, un exemple:

svn merge -c -12345 https://svn.mysite.com/svn/repo/project/trunk
             ^ The negative is important

Pour TortoiseSVN (je pense...)

  • Faites un clic droit dans l'Explorateur, allez dans le menu TortoiseSVN -> Fusionner...
  • Assurez-vous que "Fusionner une plage de révisions" est sélectionnée, cliquez sur Suivant
  • Dans la "Révision de la gamme de fusionner" zone de texte, spécifiez la révision, qui a supprimé le fichier
  • Cocher la case "Inverser fusion" case à cocher, cliquez sur Suivant
  • Cliquez Sur Fusionner

C'est complètement non testé, cependant.


Édité par l'OP: Cela fonctionne sur ma version de TortoiseSVN (le vieux genre sans le bouton suivant)

  • Allez dans le dossier que des trucs a delated de
  • Faites un clic droit dans l'Explorateur, allez dans le menu TortoiseSVN -> Fusionner...
  • dans le De la section entrée de la révision qui a le supprimer
  • dans le À la section entrer dans la révision avant de le supprimer.
  • Cliquez sur "fusionner"
  • s'engager

L'astuce est de les fusionner en arrière. Bravo à sean.lumineux pour me pointer dans la bonne direction!


Edit: Nous sommes à l'aide de différentes versions. La méthode que j'ai décrite a parfaitement fonctionné avec ma version de TortoiseSVN.

Il est également à noter que si il y a eu plusieurs changements dans le commit vous êtes inverse de la fusion, vous aurez envie de revenir à ceux d'autres changements lorsque la fusion est réalisée avant de vous engager. Si vous ne le faites pas, ces modifications seront également inversé.

27voto

gbarry Points 3813

Pour être complet, c'est ce que vous auriez trouvé dans le svn livre, si vous aviez su quoi chercher. C'est ce que vous avez découvert déjà:

Annulation Des Modifications

Ressusciter Les Éléments Supprimés

Même chose, de la plus récente (et détaillé) la version du livre:

Annulation Des Modifications

Ressusciter Les Éléments Supprimés

16voto

Mukul Joshi Points 91

Utiliser le Tortoise SVN de la fonctionnalité de copie de revenir engage changements:

  1. Cliquez-droit sur le dossier parent du dossier qui contient les fichiers supprimés/dossier
  2. Sélectionnez l'option "afficher l'historique"
  3. Sélectionnez et faites un clic droit sur la version avant les changements/supprimé a été fait
  4. Sélectionnez le bouton "parcourir référentiel"
  5. Sélectionnez le fichier/dossier qui doit être restauré de droite et cliquez sur
  6. Sélectionnez "copie" qui va copier les fichiers/dossiers de la révision head

Espère que ça aide

12voto

NullPoiиteя Points 23754

Me semble toujours utiliser svn copy comme une opération de serveur donc ne sais pas si cela fonctionne avec deux voies de travail.

Voici un exemple de restauration d’un fichier supprimé dans une copie de travail locale du projet :

Tout en étant à l’intérieur du répertoire du projet. Cela fonctionne aussi bien pour la restauration des dossiers complets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X