2010-02-10 9 views
61

J'utilise Mercurial. J'ai fait un clone d'un dépôt. Pour le débogage, j'ai changé quelques lignes de code dans un fichier java. Je n'ai pas commis ces changements cependant. Je veux juste les rétablir à leur état d'origine, tel que trouvé dans le référentiel. J'ai essayé hg revert filename.java, qui ne revenir, mais maintenant, quand je fais hg status, je vois des fichiers supplémentaires ajoutés dans mon dossier comme maintenant:En utilisant hg Revert de Mercurial

? filename.java.orig 

Puis-je supprimer simplement ces fichiers, et pourquoi Mercurial les faire quand je l'utilise revenir?

Répondre

47

Oui, vous pouvez les supprimer. C'est une fonction de sécurité au cas où vous inversiez quelque chose que vous ne vouliez pas revenir.

5

Ces fichiers de sauvegarde peuvent être créés pour la fusion et des opérations (cf. reviennent man page). Vous pouvez ajouter une règle d'ignorer si vous le souhaitez, ou simplement les supprimer si vous n'en avez plus besoin.

0

Ceux-ci sont plutôt communs, résultant de diverses opérations. Un coup d'œil sur l'un des dépôts de taille moyenne que je travaille trouve 237 d'entre eux. Je n'aime pas supprimer des choses qui peuvent finir par être utile, et je n'ai aucune raison de nommer les fichiers légitimes avec le même suffixe, donc j'ajouter ce qui suit à la place .hgignore:

.\.orig$ 
6

sont les exemplaires du fichiers d'avant vous les avez inversés. Si vous n'avez pas besoin ceux-ci, vous pouvez les supprimer, soit à la main ou en utilisant le Purge extension:

hg clean 
+1

Il y a une commande "propre" dans le standard Mercurial - peut-être pensez-vous à l'extension de purge et 'hg purge'? –

+1

@Martin: Taper 'hg clean' indique que' clean' est fourni par l'extension de purge – Casebash

+2

Casebash: ah, à droite - l'extension de purge fournit la commande sous les deux noms: 'hg purge' et' hg clean'. –

8

Comme d'autres l'ont souligné ce, vous pouvez supprimer ces fichiers.

Vous pouvez les supprimer en exécutant cette commande à partir de la racine de votre repo:

rm `hg st -un | grep orig` 

Si vous voulez revenir, et ne se soucient pas du tout sur la sauvegarde des fichiers d'origine, la commande que vous voulez est:

hg update -C 
85

Vous pouvez également utiliser le drapeau --no-sauvegarde et les fichiers .orig ne seront pas créés

hg revert --no-backup filename.java 

Au Mercurial 2.0, vous pouvez utiliser à la place le drapeau C pour supress les fichiers .orig d'être créé

hg revert -C filename.java 
+0

Enregistrer un peu de frappe avec: 'hg revert -C filename.java' – jbranchaud

+0

Le raccourci -C a été introduit avec mercurial 2.0 voir http://mercurial.selenic.com/wiki/WhatsNew – Fooman

+7

Je ne suis pas sûr de comprendre comment - C' est l'abréviation de '--no-backup' ... est-ce un' C' réutilisable? – dreamlax

23

Je trouve la purge extension à portée de main. Utilisation:

hg purge 

« Cette extension purges tous les fichiers et répertoires ne sont pas suivis par Mercurial » - y compris les fichiers .orig mais à l'exclusion des fichiers ignorés (sauf si vous utilisez --all).

0

J'ai fait ce fichier batch moi-même.

IF "%1%" == "d" (
    del /s *.orig 
    del /s *.rej 
) ELSE ( 
    del /s /p *.rej 
    del /s /p *.orig 
) 

Aide: Enregistrer ce contenu comme orig.bat

  1. Run orig d pour supprimer tous les rejets et les fichiers orig à la fois sans confirmation
  2. Run orig pour supprimer des fichiers avec confirmation [mécanisme de sécurité]

Espérons que cela est utile.

Questions connexes