74 votes

De restaurer ou de revenir ensemble du référentiel svn à une révision plus ancienne

J'ai foiré sur mon dépôt SVN et maintenant besoin de retourner la totalité du référentiel de révision 28 à 24 ans et ne voulez pas avoir affaire avec des diffs ou des conflits. Est-il une façon simple et rapide de faire cela? J'ai été en mesure de revenir seul les fichiers avant de très bien avec la commande de fusion - mais dans ce cas il veut ajouter tous les fichiers dans le référentiel de révision 28 quand tout ce que je veux vraiment faire est de les supprimer.

Je suis en utilisant la ligne de commande sur une machine linux (bash).

Merci

MODIFIER

Merci pour toute l'aide que! J'ai corrigé par:

svnadmin create /svnroot/<repo>.fixed
svnadmin dump -r 1:24 /svnroot/<repo> --incremental > dump.svn
svnadmin load /svnroot/<repo>.fixed < dump.svn

En mettant ensuite le vieux repo dans un emplacement de sauvegarde et de déplacer le repo.fixe des pensions.

Merci encore!

26voto

Justin Love Points 3073

Découvrez svnadmin dump/charge. Il crée un fichier texte avec toutes les versions de vos fichiers. Il peut être possible de tout supprimer au-dessus/en-dessous d'un certain point et ré-importer.

Voir, par exemple, la Migration de Données de Référentiel Ailleurs

25voto

luapyad Points 2680

Un "inverse" de fusion peut être ce dont vous avez besoin. Voir "annulation des modifications" de la section de svn livre.

E. g. svn merge-r 28:24 [chemin d'accès au svn]

14voto

fuenfundachtzig Points 1402

Si vous avez accès au serveur SVN, vous pouvez simplement éditer path/db/current, le vieux numéro de révision vous voulez revenir (ici: 24) il y a, et supprimer n'est plus nécessaire de révision des fichiers (c'est à dire 25, 26, 27, 28) à partir de path/db/revs/0/. Au moins cela a fonctionné pour moi aujourd'hui, après que j'ai accidentellement supprimé un répertoire dans le référentiel.

13voto

Sander Rijken Points 15425

Si vous avez vraiment besoin pour essuyer des "preuves" que les fichiers n'a jamais existé, ce que vous devez faire la svndump/svnload actions décrites ci-dessus.

Dans un niveau "normal" de la situation, où vous faites une erreur, vous devez utiliser l'inverse de fusion. Ce assurez-vous que l'annulation des modifications après r24 peut également être annulées, comparable, etc.

La commande ci-dessous doivent travailler pour annuler vos modifications (vous devez vous engager à la suite de la fusion afin de refléter la fusion dans le référentiel)

svn merge -r 28:24

6voto

MarcH Points 1868

Si vous n'avez pas disposer des droits d'administrateur, vous ne pouvez pas effacer toutes les anciennes révisions, MAIS vous pouvez toujours cacher très bien avec juste un étonnamment simple "svn copie de la commande" (nickf et JesperE déjà parlé, mais plutôt cryptique façon)

svn delete protocole://svnserver/certains/ressources
svn copy protocol://svnserver/some/resource@24 protocole://svnserver/certains/ressources

Et voilà, les révisions de 25 à 28 ont complètement disparu de svn log. Ce n'est pas un hack, c'est un coffre-fort et (à peine...) fonctionnalité documentée.

Si la "ressource" est un répertoire, vous devez supprimer à partir de la dernière URL:

svn copy protocol://svnserver/some/directory@24 protocole://svnserver/certains/

(sinon, vous devez le copier à l'intérieur de lui-même)

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