200 votes

Revenir un seul fichier en SVN à une révision particulière

J'ai un fichier comme indiqué ci-dessous dans un dépôt SVN que je voudrais revenir à une version précédente. Quelle est la méthode pour le faire dans SVN? Je veux seulement rétrograder ce fichier particulier vers une version plus ancienne, pas tout le dépôt.

Merci.

$ svn log myfile.py
----------------------
r179 | xx | 2010-05-10

Changement 3
----------------------
r175 | xx | 2010-05-08

Changement 2
----------------------
r174 | xx | 2010-05-04

Initial

0 votes

Lorsque vous avez dit rétablir, qu'avez-vous voulu dire, il y a 7 ans, lol

188voto

Eric Hauser Points 3446

Si vous voulez simplement l'ancien fichier dans votre copie de travail :

svn up -r 147 myfile.py

Si vous voulez revenir en arrière, consultez ce "Comment revenir à une version plus ancienne de notre code dans subversion?".

9 votes

Mais la prochaine fois que vous mettez à jour, il récupère le fichier que vous ne vouliez pas de retour... :S

2 votes

Si vous ne le voulez pas en arrière, SVN commit ce fichier, pour mettre la version que vous souhaitez dans le dépôt.

15 votes

Il est probable que cela ne fasse pas réellement ce que l'auteur de la question voulait. En utilisant ceci, la copie de travail est propre et ne peut pas être validée TELLE QUELLE, et une "mise à jour svn" sans numéro de version spécifié récupérera la dernière version non désirée.

58voto

thestar Points 384
svn revert nomdufichier 

cela devrait revenir en arrière sur un fichier.

4 votes

Qu'est-ce qui se passe avec toutes les autres réponses contenant des commandes plus longues? Merci.

0 votes

Vous êtes les bienvenus. Je n'ai aucune idée de ce qui se passe avec les autres réponses.. lol

0 votes

Ils sont plus longs, et ils sont debout. Je suis d'accord.

50voto

Mitch Dempsey Points 13568

Pour un seul fichier, vous pourriez faire :

svn export -r svn://host/path/to/file/on/repos file.ext

Vous pourriez faire svn revert mais cela ne restaurera que la dernière copie de travail.

2 votes

Exportez, puis collez-le dans votre copie locale, puis commitez à nouveau?

1 votes

@tgkprog c'est une façon de le faire, oui

0 votes

@tgkprog et quelle est la manière "préférée" ?

13voto

khmarbaise Points 28405

La meilleure façon est de :

svn merge -c -RevisionToUndo ^/trunk

Cela annulera tous les fichiers de la révision, puis il vous suffit de revenir en arrière sur les fichiers que vous ne souhaitez pas annuler. N'oubliez pas le tiret (-) comme préfixe pour la révision.

svn revert File1 File2

Committez maintenant les changements.

7voto

user654914 Points 91

J'ai trouvé que c'est simple de le faire via la commande svn cat afin que vous n'ayez même pas à spécifier une révision.

svn cat mydir/myfile > mydir/myfile

Cela ne rejettera probablement pas les données d'inode (métadonnées) telles que les horodatages.

0 votes

Ensuite, commitez le fichier afin qu'il soit envoyé dans le dépôt.

3 votes

Cela a mieux fonctionné pour moi que la mise à jour. Parce que la mise à jour ne vous permet pas de valider la modification apportée à ce fichier. (svn 1.8.3)

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