2008-11-03 9 views

Respuesta

53

La mejor manera de hacerlo es usando el 'convert' extension. Vamos a usar mercurial y la fuente y el tipo de destino y luego utiliza un --filemap con entradas como:

exclude path/you/do/not/want 
rename path/you/do/want . 

El cambio de nombre sólo es necesario si se quiere tomar las partes que está manteniendo y moverlos "superior" en la jerarquía de directorio.

+4

Esto no funciona: cambie el nombre de la ruta/usted/hacer/querer/ Esto: cambiar el nombre de la ruta/usted/hacer/querer. Esto solo se aplica si está moviendo una ruta a la raíz. –

+0

De hecho, gracias, Nathan. –

+2

http://mercurial.selenic.com/wiki/ConvertExtension – Julian

-4

Simplemente clonar y eliminar las cosas no deseadas de cada copia.

+1

eso no ayuda. Cada cierre todavía tiene un historial completo, por lo que las "demasiadas cosas" siempre estarán ahí en el directorio ".hg" ocupando espacio. –

+10

ah, quieres la forma de revisionismo estalinista del control de versiones. ;) http://en.wikipedia.org/wiki/Historical_revisionism_(negationism) –

+0

@ Ry4an ¿Pero no son los clones copias eficientes entre sí? Es decir, sí, el historial de revisión de los elementos eliminados estará en ambos repositorios, pero solo se almacenará una vez en el disco, ¿verdad? Entonces, si cloné un repositorio con varias revoluciones en los archivos A - D y luego lo borré para darme un repositorio A/B y C/D, solo estaría almacenando una copia de todas las revoluciones de AD junto con un conjunto de cambios adicional en cada uno indicando C/D se eliminaron en uno y A/B en el otro. ¿Derecha? –

0

encontré una guía detallada here:

crear un mapa de archivos new-repo.filemap como

include vendor/FooBackend 
rename vendor/FooBackend . 

Cree otro archivo de mapa rewrite-old-repo.filemap:

exclude vendor/FooBackend 

crear el nuevo repositorio:

hg convert /path/to/current/repo /path/to/new/repo --filemap new-repo.filemap 

El nuevo repositorio ha finalizado. El directorio está vacío, pero un hg update actualizará su contenido.

crear el depósito de modificación:

hg convert /path/to/current/repo /path/to/rewritten/repo --filemap rewrite-old-repo.filemap 
Cuestiones relacionadas