Mercurial Supprimer L'Historique
Est-il un moyen de mercurial pour supprimer les anciennes révisions à partir d'une base de données? J'ai un référentiel de 60 go et qui le rend assez pénible de faire un clone. Je voudrais retrancher tout ce qui est avant une certaine date et enfiler l'énorme base de données de loin pour recueillir la poussière.
- Les fichiers sont gros?
- Comment se fait-il obtenir que grand pour commencer?
- Si Jake a tout les fichiers binaires (qui sont parfois nécessaires... pas tous les fichiers binaires sont générés par la source), puis chaque petit changement pour que les résultats de fichier dans une nouvelle copie faite dans le repo. En fonction de la taille du fichier ou de la fréquence des changements, quelque chose comme 60 GO pourrait ne pas prendre autant de temps.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire, mais vous la nullité de tous les clones de là, il est donc généralement préférable de ne pas le faire sauf si vous travaillez entièrement seul.
Chaque ensemble de modifications dans mercurial est identifié de manière unique par un hashcode, qui est une combinaison de (entre autres choses) la modification du code source, des métadonnées et les hachages de ses un ou deux parents. Les parents doivent exister dans le repo tout le chemin du retour au début du projet. (N'ayant pas cette restriction serait d'avoir peu profondes des clones, qui ne sont pas (encore)).
Si vous êtes d'accord avec la modification de la hachages de la plus récente révision (qui brise toutes les clones il y a dans la nature), vous pouvez le faire avec les commandes;
Vous aurez probablement à faire un peu de travail pour traiter de fusion des révisions, mais c'est l'idée générale.
On pourrait aussi le faire en utilisant
hg convert
avec le typehg
comme la source et la destination des types, et à l'aide d'unsplicemap
, mais c'est probablement plus encore en jeu.La grande question est, comment voulez-vous de type de 60GB de code source, ou avez-vous été l'ajout de fichiers générés à l'encontre de tous les conseils. 🙂
hg qimport
, et puis en poussant un par un avecqpush
, la fixation d'éventuels problèmes et, enfin, de commettre tout avechg qfinish -a
hg convert
conserve plus d'informations quehg export
(pas besoin de fusionner des révisions). Gerd réponse est plus facile que d'utilisersplicemap
et est probablement plus fiable queexport
: stackoverflow.com/a/8819813/14731Il n'est pas simple /moyen recommandé de le faire directement à un référentiel existant.
Vous pouvez cependant "convertir" votre mercurial repo à un nouveau mercurial repo et choisir une révision de l'histoire partir via le convertir.hg.startrev option
Le nouveau repo contient tous les éléments de l'original repo moins l'histoire antérieure à la première révision.
Mise en garde: Le nouveau repo aura complètement nouvelle révision de l'IDs, c'est à dire qu'il n'est en aucune façon liée à l'origine des pensions. Après la création du nouveau repo chaque développeur a pour cloner le repo et nouvelles de supprimer leurs clones à partir de l'original repo.
Je l'utilise pour nettoyer les vieux repos utilisé en interne au sein de notre entreprise, combinée avec l'option --filemap option pour supprimer les fichiers indésirables de trop.
convert
extension à être activé: [extensions] hgext.convertir=