2012-04-11 19 views
32

Ho appena creato un repository mercuriale creato da un ecosistema eterogeneo di altri repository. Prima di pubblicarlo ai miei colleghi, voglio pulirlo il più possibile. A tal fine, mi piacerebbe rimuovere completamente alcuni vecchi file dalla storia (fingere che non siano mai esistiti), quindi il repo sarà più piccolo.Come si rimuovono i grandi file dalla cronologia in mercurial?

È possibile con mercurial?

+8

Non capisco il voto di chiusura "fuori tema"; questa domanda è perfettamente in tema. –

+0

@Graham, stai dicendo che pensi che gli ingegneri del software dovrebbero usare il controllo di revisione? È una chiacchiera pazzesca ... – sage

risposta

35

Controllare l'estensione convert, in particolare l'opzione --filemap.

Abilita aggiungendo quanto segue a mercurial.ini:

[extensions] 
convert = 

creare una mappa di file da escludere:

exclude path/to/file1 
exclude path/to/file2 

poi convertire il repo:

hg convert srcrepo destrepo --filemap <map> 

notare che c'è un bug in Mercurial 2.1.1 causando un errore con il comando precedente:

initializing destination destrepo repository 
abort: invalid mode ('r') or filename 

Basta aggiungere l'opzione --splicemap <nonexistent file> per risolvere il problema.

+0

Grazie per la tua risposta! La documentazione per --filemap è piuttosto scarsa, avresti un link che lo spiega con un po 'più di dettaglio? –

+0

@static_rtti, risposta aggiornata. –

+0

Wow, fantastico! Grazie mille. –

Problemi correlati