2012-04-11 19 views
32

Acabo de crear un repositorio mercurial creado a partir de un ecosistema heterogéneo de otros repositorios. Antes de publicarlo en mis compañeros de trabajo, quiero limpiarlo tanto como sea posible. Para este fin, me gustaría eliminar por completo unos pocos archivos antiguos de la historia (pretender que nunca existieron), por lo que el repositorio será más pequeño.¿Cómo se eliminan los archivos grandes del historial en mercurial?

¿Esto es posible con mercurial?

+8

No entiendo el voto cercano "fuera del tema"; esta pregunta es perfectamente sobre el tema. –

+0

@ Graham, ¿estás diciendo que crees que los ingenieros de software deberían usar el control de revisión? Eso es una locura ... – sage

Respuesta

35

Compruebe la extensión convert, particularmente la opción --filemap.

Habilitar añadiendo lo siguiente a mercurial.ini:

[extensions] 
convert = 

crear un mapa de los archivos que desea excluir:

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

luego convertir el repositorio:

hg convert srcrepo destrepo --filemap <map> 

cuenta que hay una error en Mercurial 2.1.1 que causa un error con el comando anterior:

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

Simplemente agregue la opción --splicemap <nonexistent file> para solucionar el problema.

+0

¡Gracias por tu respuesta! La documentación para --filemap es bastante escasa, ¿podría tener un enlace que lo explique con un poco más de detalle? –

+0

@static_rtti, respuesta actualizada. –

+0

¡Guau! ¡Increíble! Muchas gracias. –

Cuestiones relacionadas