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 (doc
docs
, test
tests
,util
utils
) 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?
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.
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.
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.