2010-10-13 21 views
13

ok, quando ero giovane, ho messo i file di grandi dimensioni gravi (come file di risorse, dll, ecc.) Nei miei repository mercuriali. e ho trovato la dimensione di esso è così grande che non riesco a spingerlo facilmente in bitbucket,eliminare i file nella cronologia per risparmiare spazio in mercurial

in qualsiasi modo per cancellare la cronologia dei file FACILMENTE?

Ho inserito tutti i file in/res e/dll.

edit:

questa è una soluzione, ma cancellerà parte della storia, quindi forse c'è una soluzione migliore. Mercurial Remove History

+0

duplicato con http://stackoverflow.com/questions/1898600/cleaning-out-a-mercurial-repository –

risposta

18

La cosa migliore è quello di utilizzare l'estensione convert, ma avvertimento si finisce con un pronti contro termine completamente diverso. Ogni hash sarà diverso e ogni persona clonata dovrà eliminare il clone e ripetere la clonazione.

Detto questo, ecco cosa dovete fare:

Creare un file FileMap chiamato filemap.txt contenente:

exclude res 
exclude dll 

e quindi eseguire il seguente comando:

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

Ad esempio:

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

Questo ti dà un repository completamente nuovo che ha tutta la tua cronologia tranne la cronologia di qualsiasi file in/res e/dll, ma ancora una volta sarà un nuovo repository non correlato per quanto riguarda mercurial (e bitbucket).

+0

L'interruttore di conversione non è stato trovato per qualche motivo è stato rimosso? – keyoke

+1

il mio male è necessario aggiungere manualmente quanto segue in mercurial.ini prima che funzioni [estensioni] hgext.convert = – keyoke

+0

Sembra un buon approccio ma funzionerebbe ancora se voglio rimuovere file specifici? Di 'una dll specifica? Potresti usare ?: escludi MyDll.dll –

Problemi correlati