2010-10-13 2 views
13

ok, quand j'étais jeune, j'ai mis severial gros fichiers (comme le fichier de ressources, dll, etc.) dans mes repos mercurial. et j'ai trouvé la taille de celui-ci est si grand que je ne peux pas facilement le pousser dans bitbucket,supprimer des fichiers dans l'histoire pour économiser de l'espace dans mercurial

un moyen de supprimer l'historique de ces fichiers EASY?

Je mets tous ces fichiers dans le chemin/res et/dll.

modifier:

c'est une solution, mais il supprimera une partie de l'histoire, alors peut-être il y a une meilleure solution. Mercurial Remove History

+0

dupliquer avec http://stackoverflow.com/questions/1898600/cleaning-out-a-mercurial-repository –

Répondre

18

Votre meilleur pari est d'utiliser l'extension de conversion, mais avertissement vous vous retrouverez avec une prise en pension totalement différent. Chaque hachage sera différent et chaque personne clonée devra supprimer son clone et re-cloner.

Cela dit, voici ce que vous faites:

Créer un fichier FileMap nommé filemap.txt contenant:

exclude res 
exclude dll 

puis exécutez la commande suivante:

hg convert --filemap filemap.txt your-source-repository your-destination-repository 

Par exemple:

hg convert --filemap filemap.txt /home/you/repos/bloatedrepo /home/you/repos/slenderrepo 

Cela vous donne un nouveau repo qui a toute votre histoire, sauf l'histoire de tous les fichiers dans/res et/dll, mais encore une fois, il s'agira d'un nouveau repo sans rapport avec mercurial (et bitbucket).

+0

Le commutateur de conversion n'est pas trouvé pour une raison quelconque a-t-il été retiré? – keyoke

+1

mon mauvais vous devez ajouter manuellement ce qui suit dans mercurial.ini avant qu'il ne fonctionne [extensions] hgext.convert = – keyoke

+0

Cela me semble une bonne approche, mais cela fonctionnerait-il encore si je veux supprimer des fichiers spécifiques? Dites une DLL spécifique? Pourriez-vous utiliser?: exclure MyDll.dll –

Questions connexes