¿Duplicar el repository de Subversion con Bazaar sin importar el historial completo?

Me gustaría usar Bazar para trabajar con un proyecto que usa Subversion y tiene una historia muy larga. Por ejemplo svn://svn.freebsd.org/base/head .

Hay un buen complemento bzr-svn que se puede usar para trabajar con repositorys SVN. Aquí hay algunos ejemplos de flujos de trabajo relevantes.

Mi problema es que todo lo que he encontrado parece estar escrito con la suposition de que quiero importar el historial completo de SVN. No quiero hacer eso. Se necesita demasiado espacio en disco (y en realidad la import se quedará sin memory si lo bash). Realmente no me preocupan los cambios antes de una cierta revno / tag de SVN. Pero sí quiero que cada individuo se comprometa después del punto de corte para aparecer correctamente en el bazar. ¿Cómo puedo lograr eso?

Básicamente quiero la siguiente lógica para mi sucursal de proveedor (desde la que puedo hacer mis sucursales locales):

 svn co svn://svn.freebsd.org/base/head -r CUTOFF_REVNO while true do svn up -r NEXT # note: NEXT is not possible even though there is PREV bzr commit sleep N done 

Obviamente, lo anterior no almacena los posts de confirmación y otras cosas similares en Bazar, que es un problema. Podría hacer que este sea un trabajo de cron diario que simplemente haga svn up y comprometa todos los cambios de SVN dentro de un día en la twig Bazaar en una única confirmación diaria.

¿Cómo puedo lograr esto para que los metadatos y las confirmaciones individuales se conviertan correctamente a Bazar (con la misma granularidad que tienen en el lado del SVN)? No necesito poder ingresar al SVN. Todo lo que necesito es una solución de una sola vía. ¡Espero que haya una herramienta en alguna parte que pueda hacer exactamente esto!

Creo que encontré una solución potencial, así que me estoy respondiendo a mí mismo.

Hay una herramienta llamada Tailor que puede hacer exactamente esto. Es una solución genérica, por lo que funciona con la mayoría de los sistemas de control de versiones (como CVS, SVN, Bazar, Mercurial, Git, Darcs y algunos otros).

Para lograr lo que solicité, necesito el siguiente file de configuration, por ejemplo freebsd-tailor.conf :

 [DEFAULT] verbose = True projects = freebsd-current [freebsd-current] root-directory = /home/tailor/freebsd-current subdir = upstream source = svn:freebsd-current target = bzr:freebsd-current start-revision = 225424 [svn:freebsd-current] repository = svn://svn.freebsd.org/base module = /head encoding = iso-8859-1 [bzr:freebsd-current] 

Luego ejecuto tailor -c freebsd-tailor.conf para hacer la synchronization inicial en revno 225424 y vuelvo a ejecutar el command cada vez que quiero get incrementalmente los nuevos cambios después de eso.

Actualmente estoy probando esto. Actualizaré mi respuesta con éxito o fracaso. Otras soluciones son bienvenidas. 🙂

ACTUALIZAR:

Hice el ejemplo de configuration un poco más simple y agregué la input de encoding que parece ser necesaria en muchos proyectos.

El resultado de mis testings hasta el momento es que el sastre desafortunadamente no es muy robusto con proyectos grandes (como en mi ejemplo). Por alguna razón, falta un subdirectory en mi repository bzr y extraer las actualizaciones con sastre es muy lento y requiere una gran cantidad de resources. Tal vez funciona bien con pequeños proyectos. Me gusta cómo el sastre tiene tantos back-ends para diferentes VCS y es neutral acerca de sus diferencias.