Comment renommer un répertoire en Mercurial et de continuer à suivre toutes les modifications de fichiers
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 je l'ai pensé plus à ce sujet, je pense que les nouveaux noms sont plus appropriés. Ma pensée générale maintenant, c'est que si les récipients sont nommés d'après leur contenu, leurs noms, le pluriel des noms.
Maintenant que je suis prêt pour mon prochain hg commit
je me demandais comment savoir Mercurial répertoire de ces changements de nom. Je suis nouveau sur le RCS logiciel en général, et n'ont été en utilisant Mercurial pour un couple de mois. Quand je lance hg status
il affiche tous les fichiers dans ces répertoires à supprimer et ajouté, donc j'ai peur que si je fais juste un hg addremove
, je vais perdre tout l'historique des modifications de fichiers dans ces répertoires, ou à tout le moins, le changement de l'histoire va se fragmenter et introuvable. Je suis venu à travers la hg rename
de commande, mais les docs de discuter de son utilisation pour des fichiers individuels, pas les répertoires.
Après lecture de Bryan O'Sullivan's 'Definitive Guide" il semble que peut-être rename
peut se référer à des répertoires.
Alors, 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
Quelqu'un peut-il me dire si cela est accepté et méthode préférée pour le renommage des répertoires dans Mercurial, et si non, comment dois je faire.
Vous devez vous connecter pour publier un commentaire.
Puisque vous avez déjà renommé les répertoires, ce qui est parfaitement OK. (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, puis à le laisser Mercurial savoir à ce sujet).Si vous n'avez pas d'autres fichiers à archiver, le
hg addremove
est superflu. Regardez dans la sortie dehg stat
et vous ne devriez voir que les lignes commençant par " R " (pourdoc/*
,test/*
etutil/*
) et 'A' (pourdocs/*
, etc.)Enfin, n'oubliez pas de valider les modifications.
EDIT: Oublié de dire... utiliser
hg log --follow
pour suivre les modifications dans le renommer.Mercurial a pas de notion de répertoires, il traite tout (fichiers et répertoires) en tant que fichiers. Aussi, j'ai l'habitude de ne jamais renommer des fichiers ou des répertoires manuellement; je viens de l'utiliser
Je vous suggère de le faire aussi.
Mercurial propose de renommer la fonction de suivi, ce qui signifie qu'mercurial permet de retracer l'historique complet d'un fichier qui a été renommé. Si vous renommer manuellement cela, il n'est pas possible.
Cependant, comme vous l'avez déjà renommé manuellement, vous devez utiliser le
--follow
argument avechg 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.L'une des raisons pour utiliser-après au lieu de le renommer avec hg, si vous utilisez un outil de refactoring qui ne sont plus que de le renommer par exemple résout également les références.