Comment renommer un répertoire dans Mercurial et continuer à suivre toutes les modifications de fichier

j'ai décidé de renommer certains répertoires dans ma maison/hobby paquet Python (docdocs, testtests,utilutils) parce que, maintenant que j'y ai réfléchi, je pense que les nouveaux noms sont plus appropriés. Ma pensée générale maintenant est que si les conteneurs sont nommés d'après leur contenu leurs noms devraient être des noms pluriels.

Maintenant que je suis prêt pour mon prochain hg commit je me demande comment informer Mercurial de ces changements de nom de répertoire. Je suis nouveau au RCS Logiciels en général et N'utilisent Mercurial que depuis quelques mois. Quand je run hg status il affiche tous les fichiers de ces répertoires étant supprimés et ajoutés, donc je crains que si je fais juste un hg addremove je vais perdre toute l'histoire de changement pour les fichiers de ces répertoires, ou au moins l'histoire de changement deviendra fragmentée et intraçable. Je suis venu à travers les hg rename commande, mais les docs ne discutent de son utilisation que pour les fichiers individuels, pas pour les répertoires.

Après autres lectures dans le "guide définitif" de Bryan O'Sullivan, il semble que peut-être rename peut renvoyer à des répertoires.

Donc voici ce que j'ai décidé d'essayer:

hg rename --after doc docs
hg rename --after test tests
hg rename --after util utils
hg status
hg addremove

est-ce que quelqu'un peut me dire si c'est la méthode acceptée et préférée pour renommer les répertoires dans Mercurial, et si ce n'est pas le cas, comment dois-je le faire?

33
demandé sur Don O'Donnell 2010-08-21 04:03:47

3 réponses

puisque vous avez déjà renommé les répertoires, C'est parfaitement correct. (Il aurait sauvé une étape manuelle si vous laisserais Mercurial renommer pour vous: hg rename doc docs, etc. au lieu de le faire vous-même, faites-le savoir à Mercurial).

Si vous n'avez pas d'autres fichiers à archiver, le hg addremove est superflu. Regardez dans la sortie de hg stat et vous ne devriez voir que les lignes commençant par " R " (pour doc/*,test/* et util/*) et " A " (pour docs/*, etc.)

enfin, n'oubliez pas d'effectuer les changements.

EDIT: oublié de le dire... utilisez hg log --follow pour suivre les changements à travers le renommage.

38
répondu Niall C. 2010-08-21 00:43:01

Mercurial n'a pas de concept de répertoires; Il traite tout (fichiers et répertoires) comme des fichiers. En outre, je n'ai jamais renommer des fichiers ou des répertoires manuellement; j'utilise juste

hg renommer ancien nom nouveau nom

je vous suggère de le faire aussi.

Mercurial offre une fonctionnalité de suivi de renommage, ce qui signifie que mercurial peut retracer l'histoire complète d'un fichier qui a été renommé. Si vous renommer manuellement, ses pas possible.

Toutefois, comme vous l'avez déjà renommé manuellement, vous devez utiliser le --follow argument avec hg log pour suivre les modifications de fichier à travers l'histoire.

Personnellement, j'avais juste aller avec hg rename et il devrait être la méthode préférée.

16
répondu WoJ 2013-07-02 09:40:53

une raison d'utiliser -- après au lieu de renommer avec hg est si vous utilisez un outil de recadrage qui fait plus que simplement renommer, par exemple corrige également les références.

10
répondu Andrew McKinlay 2011-07-06 23:10:32