J'ai un fichier comme indiqué ci-dessous dans un repo SVN que je voudrais revenir à une version précédente. Quelle est la manière de faire cela dans SVN? Je veux uniquement 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
Change 3
----------------------
r175 | xx | 2010-05-08
Change 2
----------------------
r174 | xx | 2010-05-04
Initial
Réponses:
Si vous voulez juste l'ancien fichier dans votre copie de travail:
Si vous souhaitez revenir en arrière, voir ceci " Comment revenir à une ancienne version de notre code en subversion? ".
la source
svn cat prend aussi un argument de révision!
svn cat -r 175 mydir/myfile > mydir/myfile
la source
cela devrait rétablir un seul fichier.
la source
Pour un seul fichier, vous pouvez faire:
svn export -r <REV> svn://host/path/to/file/on/repos file.ext
Vous pouvez le faire,
svn revert <file>
mais cela ne restaure que la dernière copie de travail.la source
Jusqu'à présent, toutes les réponses ici semblent avoir des inconvénients importants, sont compliquées (besoin de trouver l'URI du repo) ou elles ne font pas ce que la question demandait probablement: Comment remettre le repo en état de marche avec cette ancienne version du fichier .
svn merge -r head:[revision-number-to-revert-to] [file-path]
est l'OMI le moyen le plus propre et le plus simple de le faire. Veuillez noter que ramener un fichier supprimé ne semble pas fonctionner de cette façon [1]. Voir aussi la question suivante: Meilleure façon de revenir à une révision SVN précédente d'un fichier?[1] Pour ce que vous voulez
svn cp -r [rev-number] [repo-URI/file-path]@[rev-number] [repo-URI/file-path] && svn up
, voir aussi Quelle est la bonne façon de restaurer un fichier supprimé de SVN?la source
svn merge
ne prend pas plusieurs fichiers comme argument pour une raison quelconque. Dans ce cas, il semble ne rien faire (sans message d'erreur).Le meilleur moyen est de:
Cela annulera tous les fichiers de la révision au lieu de simplement restaurer les fichiers que vous n'aimez pas annuler. N'oubliez pas le tiret (
-
) comme préfixe de la révision.Maintenant, validez les modifications.
la source
Vous voulez faire
svn merge -r [revision to revert from]:[revision to revert to] [path/filename]
Une fois que vous faites cela, vous aurez cette révision du fichier dans un état validable. Validez le fichier.
la source
J'ai trouvé qu'il était simple de le faire via la
svn cat
commande afin que vous n'ayez même pas à spécifier une révision.Cela ne rendra probablement pas les données d'inode (métadonnées) telles que les horodatages.
la source
surpris que personne n'ait mentionné cela
sans connaître le numéro de révision, vous pouvez écrire ceci, si vous venez de valider quelque chose que vous voulez restaurer, cela ne fonctionnera pas si vous avez changé un autre fichier et que le fichier cible n'est pas le dernier fichier modifié
la source
svn merge -r HEAD:PREV file
comme l'a dit @Nick RussoS'il ne s'agit que de quelques fichiers et si vous utilisez Tortoise SVN, vous pouvez utiliser l'approche suivante:
la source
Je viens d'ajouter à la réponse @Mitch Dempsy car je n'ai pas encore assez de représentant pour commenter.
L'ajout de --force écrasera la copie locale avec l'exportation et vous pourrez ensuite faire un commit svn pour le pousser vers le référentiel.
la source
Une autre option pour un seul fichier consiste à "remplacer" la version actuelle du fichier par la révision la plus ancienne:
Cela a pour fonction supplémentaire que les modifications indésirables n'apparaissent pas dans le journal de ce fichier (c'est-à-dire svn log file.ext).
la source
Si vous souhaitez restaurer un fichier individuel à partir d'une révision spécifique et pouvoir valider, procédez comme suit:
svn merge -c - [OldRev #] [Nom de fichier]
c'est à dire.
svn merge -c -150 myfile.py
Notez le négatif sur le numéro de révision
la source
la source