2009-10-26 4 views
9

Je voudrais savoir s'il est possible de restaurer un fichier supprimé à partir d'une version plus ancienne (une manière propre à le faire)bzr: Restauration d'un fichier supprimé après quelques commits avec bazar

J'ai renommé un fichier pour certains tests, que je n'engage tout mon travail (et j'ai oublié de renommer le fichier) et a fait beaucoup d'autres commits ... Lorsque je me suis rendu, il était trop tard ...

Cordialement, Ayman

Répondre

0

Ce n'est pas la meilleure réponse. Voir la réponse de bialix qui est beaucoup plus simple. Je vais laisser ceci ici pour référence.


Voici ce que je pense est la plus propre méthode:

  1. Créer une branche:

    branche bzr myTree réparation-chemin

  2. cd dans la branche de réparation

  3. Rétablir le fichier manquant lors de sa dernière révision (e g 287 dans cet exemple):

    bzr 287 lost.file -r revenir

  4. appliquez la modification

    bzr commit -m "Unshoot mon pied"

  5. cd retour dans la principale branche

  6. fusion dans la réparation

    bzr fusion réparation-chemin

  7. Lorsque vous êtes prêt, validez la fusion et supprimez la branche de réparation.

Vous pouvez le faire simplement en rétablissant la branche de travail d'origine, mais il est probablement préférable de ne pas le faire. Vous devez également vous inquiéter (juste un peu) des changements non validés.

4

Si vous connaissez le numéro de révision lorsque vous avez supprimé ce fichier (vous pouvez inspecter l'historique avec bzr log -v), vous pouvez ressusciter ce fichier avec la commande de fusion. Donc, pour le fichier foo et le numéro de révision N vous devez lancer la commande:

bzr merge foo -r N..N-1 

Par ex pour la révision 287:

bzr merge foo -r 287..286 

Cette commande va restaurer votre fichier comme dans la révision 287. Vous devez valider cette modification et vous avez terminé.

+0

Attention! Cela annulera le * whole * de rev 287. Je ne pense pas que vous pouvez fusionner juste un fichier spécifique d'un changeset. –

+0

Oui, bzr ne peut fusionner qu'un seul fichier de changeset. Vous pouvez le tester vous-même. – bialix

+0

Oui, vous avez absolument raison. +1 Je retire mon commentaire et ma réponse. La seule chose que je maintiens toujours est que, selon la complexité de votre travail, il peut être judicieux de revenir dans une autre branche. –

12

La façon la plus simple est d'utiliser simplement bzr revert avec un numéro de révision avant que le fichier a été supprimé:

bzr revert -rX path/to/file 
bzr commit -m 'Bringing path/to/file back' 

Vous n'avez pas besoin de quoi que ce soit la fusion.

Questions connexes