Subversion large repos import / checkout

Mi flujo de trabajo normal para crear un nuevo repository con subversión es crear un nuevo repository, hacer un checkout de la raíz del repository, crear mis tags de twigs y carpetas de enlaces troncales y colocar en el tronco mis files iniciales. Luego realizo una confirmación de esta "import inicial", elimino los repositorys extraídos de mi disco duro y realizo una extracción del maletero. Entonces puedo comenzar a trabajar.

Sin embargo, cuando se trata de una import grande, piense en cientos de megas, y en el alojamiento de control de versiones fuera del sitio (basado en http), esta import inicial puede tardar bastante time en confirmarse. Lo que es peor, después de comprometerme, tengo que pagar de nuevo este enorme baúl.

¿Hay alguna forma de que subversion use la copy local del trunk sin hacer un checkout una vez más de los datos que ya están allí?

Hay una llamada "import en el lugar", y está cubierta en las preguntas frecuentes de Subversion aquí:

http://subversion.tigris.org/faq.html#in-place-import

Lo que realmente está haciendo es crear un nuevo proyecto vacío en el repository, revisar el proyecto vacío de su carpeta local, que convierte su carpeta en una copy de trabajo, y luego agregar todos sus files (existentes) a ese proyecto 'vacío', para que se agreguen al repository cuando realizas una confirmación svn.

Acepto el procedimiento de "import en el lugar" y también el uso de un script para TTB-structure (upvoted both).

Solo una pequeña pista:

No debe importar un gran número (diez de miles) de files en una sola confirmación, si usa http (s), ya que el time para mostrar el historial de versiones se escala por el número de inputs agregadas . La razón de este comportamiento es que apache tiene que autenticar todas las routes agregadas en el file svnaccess (por supuesto, solo si habilitó la autorización basada en ruta). Esto puede hacer que su repository sea inutilizable, ya que todos los files tendrán que esperar en un logging svn para este gran rev.

Deberías dividir grandes importaciones en niveles de directory

Usualmente uso "svn mkdir" para crear el trunk / tags / branches directamente en el server inmediatamente después de crear el repository. Luego puedo verificar el tronco vacío, mover mis files iniciales a ese directory, agregarlos y confirmarlos, y comenzar a trabajar.

svn checkout –force le permite verificar una copy de trabajo 'sobre' una ruta existente. Guarda tus files antiguos y agrega files que están solo en tu repository.

Para crear su repository: Puede realizar múltiples commands mkdir en un repository en una única confirmación usando el command 'svnmucc' que está disponible en la mayoría de las distribuciones de Subversion (por ejemplo, SlikSVN ).

Escriba svnmucc sin arguments para get ayuda.

Si ha comprobado una sola carpeta, ha copydo sus files en ella, ejecute svn add y svn commit ; no debería necesitar eliminar los files y volver a realizar el pago.

Use los files en su lugar: una vez que se han comprometido como usted describe, están listos para ser trabajados.