web-dev-qa-db-fra.com

Besoin de restaurer une branche supprimée dans Subversion

J'ai deux copies de travail d'un référentiel Subversion, l'une du tronc et une d'une branche que j'ai créée.

J'ai accidentellement supprimé la branche dans un navigateur de référentiel. Comment restaurer la branche? Existe-t-il un moyen d'annuler la validation la plus récente pour l'ensemble du référentiel?

65
Luke

Utilisation:

svn cp [path to deleted branch]@[revision before delete] [new path]

Par exemple:

svn cp svn://myrepo.com/svn/branches/2.0.5@1993 \
       svn://myrepo.com/svn/branches/2.0.5_restored

Où 1993 est la révision avant la suppression ...

Ici est une bonne documentation ...

Il doit y avoir un moyen d'échapper au @ symbole dans le nom d'utilisateur ...

75
John Weldon

Voici une solution si vous utilisez TortoiseSVN:

  1. Dans le navigateur de dépôt, accédez au dossier parent du dossier que vous avez supprimé (par exemple, "branches").
  2. Faites un clic droit sur le dossier et faites un "Afficher le journal."
  3. Recherchez la révision dans laquelle vous avez supprimé le dossier de branche spécifique.
  4. Sélectionnez la révision immédiatement avant cette révision.
  5. Faites un clic droit et choisissez "Parcourir le référentiel". Vous examinez maintenant l'état du référentiel au moment où vous avez supprimé la branche.
  6. Recherchez le dossier de branche que vous avez supprimé, sélectionnez, cliquez avec le bouton droit et choisissez "Copier vers ..."
  7. Vous pouvez maintenant copier le dossier supprimé sous un nouveau nom ou même le même nom.
91
Brian Neal

En supposant que votre dernière révision était de 108:

svn merge --revision 108:107
svn diff 
svn commit -m "Reverted revision 108"

Vous pouvez également ajouter votre URL source à la fusion:

svn merge --revision 108:107 http://svn/repo/

Ailleurs sur le débordement de la pile: Annulation d'une validation dans TortoiseSVN

4
leonm

J'ai rencontré ce problème, mais la commande ci-dessus n'a pas fonctionné pour moi. Ce qui a été beaucoup plus facile. J'ai vérifié la branche lors d'une révision avant de la supprimer.

La révision qui a été supprimée était 9331. Je l'ai vérifiée à 9330:

svn co https://svn.acme.com/svn/giantFlySwatterTargetingSystem/branches/bug1234@9330 restored

C'était la solution facile que je voulais.

3
Alan B. Dee

Cela a fonctionné pour moi,

svn cp --username your_user_name https: // path_to_your_repo /branches/ supprimé_nom_branchée @ last_revision_before_deletion https: // path_to_your_repo /branches/ nouveau_nom_pour_branch

Alternativement, si c'était un seul commit qui a supprimé la branche:

Annulez la validation, puis validez

svn merge -c -REV .
svn commit -m "Reverting deletion of branch XYZ"
1

J'ai rencontré le même problème et l'ai résolu de cette façon dans SmartSVN (Enterprise 6.0.2):

  • Ouvrir une vue sur le coffre/TETE
  • Menu d'appel Repository/Open in Repository Browser (la branche supprimée est absente du dossier branches)
  • Dans le navigateur du référentiel, appelez le menu Référentiel/Afficher la révision ...
  • Sélectionnez la révision juste avant la suppression (la branche supprimée réapparaît dans le dossier branches)
  • Faites un clic droit sur la branche supprimée, sélectionnez Copier dans le menu et entrez le même chemin pour la destination
0
Jean-Xavier Bardant