Il est possible localement, mais pas à l'échelle mondiale, et il change l'ID de chaque commit après le point à partir duquel le fichier a été ajouté. Pour que le changement de bâton, vous aurez besoin d'accéder à chaque copie du dépôt, en particulier celui qui a tiré ou poussé à partir.
Cela dit, j'ai suivi l' Édition de l'Histoire de la séquence décrite sur l'Mercurial wiki pour supprimer un fichier de l'un de mes dépôts. Cette séquence suppose que la révision 1301:5200a5a10d8b ajouté le fichier path/to/badfile.cfg
, ce qui n'a pas été modifié pour la suite de la révision:
-
Activer la MQ extension dans votre .hgrc
:
[extensions]
mq =
-
Tirez sur les changements récents de l'amont.
hg pull
-
Tout importer à partir du fichier de plus de correspondance en MQ:
hg qimport -r 1301:tip
hg qpop -a
-
Supprimer le fichier à partir de la validation qui l'a ajouté.
hg qpush 1301.diff
hg forget path/to/badfile.cfg
hg qrefresh
-
Convertir les patchs en nouvelle Mercurial révisions.
hg qpush -a
hg qfinish -a
-
Poussez le nouveau révisions en amont.
hg push -f
-
Sur l'amont du référentiel et tous les autres de copier, de supprimer les anciennes révisions.
hg strip 5200a5a10d8b
Avertissement: Cette étape peut détruire le travail, sauf si vous êtes prudent. Si quelqu'un a commis quelque chose depuis la dernière fois que vous avez tiré de l'amont, alors vous aurez à rebase que le travail avant de se dénuder. Malheureusement, l' rebase
extension n'est pas utile ici; vous devrez utiliser MQ encore une fois, la conversion de la nouvelle s'engage dans des correctifs que vous appliquez sur la nouvelle astuce.
Bonne chance.