Je veux que mercurial supprime plusieurs fichiers de l'état actuel du référentiel. Cependant, je veux que les fichiers existent dans l'histoire antérieure.
Comment font forget
et remove
diffèrent, et peuvent-ils faire ce que je veux?
Je veux que mercurial supprime plusieurs fichiers de l'état actuel du référentiel. Cependant, je veux que les fichiers existent dans l'histoire antérieure.
Comment font forget
et remove
diffèrent, et peuvent-ils faire ce que je veux?
Réponses:
' hg forget
' est juste un raccourci pour ' hg remove -Af
'. De l' hg remove
aide ' ':
... et -Af peuvent être utilisés pour supprimer des fichiers de la prochaine révision sans les supprimer du répertoire de travail.
Bottom line: ' remove
' supprime le fichier de votre copie de travail sur le disque (sauf si vous l'utilisez -Af
) et ' forget
' ne le fait pas.
La meilleure façon de mettre c'est hg forget
est identique à hg remove
excepter qu'il laisse les fichiers derrière dans votre copie de travail. Les fichiers sont laissés en tant que fichiers non suivis et peuvent désormais être ignorés en option avec un motif dans .hgignore
.
En d'autres termes, je ne peux pas dire si vous l'avez utilisé hg forget
ou hg remove
quand je me retire de vous. Un fichier que vous avez exécuté hg forget
sur sera supprimé lorsque je mets à jour à ce changeset - comme si vous aviez utilisé à la hg remove
place.
À partir de la documentation, vous pouvez apparemment utiliser l'une des commandes pour conserver le fichier dans l'historique du projet. Il semble que vous souhaitiez le supprimer, car il supprime également le fichier du répertoire de travail.
Extrait du livre Mercurial à http://hgbook.red-bean.com/read/ :
La suppression d'un fichier n'affecte pas son historique. Il est important de comprendre que la suppression d'un fichier n'a que deux effets. Il supprime la version actuelle du fichier du répertoire de travail. Cela empêche Mercurial de suivre les modifications apportées au fichier, à partir du prochain commit. La suppression d'un fichier ne modifie en aucun cas l'historique du fichier.
La page de manuel hg (1) dit ceci à propos d'oublier:
Marquez les fichiers spécifiés afin qu'ils ne soient plus suivis après le prochain commit. Cela supprime uniquement les fichiers de la branche actuelle, pas de l'historique complet du projet, et ne les supprime pas du répertoire de travail.
Et à propos de supprimer:
Planifiez la suppression des fichiers indiqués du référentiel. Cela supprime uniquement les fichiers de la branche actuelle, pas de l'historique complet du projet.
Si vous utilisez "hg remove b"
un fichier avec le statut "A", ce qui signifie qu'il a été ajouté mais non validé, Mercurial répondra:
not removing b: file has been marked for add (use forget to undo)
Cette réponse est une explication très claire de la différence entre supprimer et oublier.
Ma compréhension est que "hg forget"
c'est pour annuler un fichier ajouté mais non validé afin qu'il ne soit pas suivi par le contrôle de version; while "hg remove"
sert à retirer un fichier validé du contrôle de version.
Ce fil a un exemple d'utilisation hg remove
contre des fichiers de 7 types de statut différents.
Un fichier peut être suivi ou non, vous utilisez hg ajouter pour suivre un fichier et hg supprimer ou hg oublier de le décompresser. L'utilisation de hg remove sans indicateurs supprimera le fichier et le supprimera, hg oublier le supprimera simplement sans le supprimer.