2010-02-10 12 views
6

Tengo un proyecto principal en el que estoy trabajando, que tiene varios módulos/directorios. El proyecto principal está vinculado al repositorio svn local. Sin embargo, cada vez que me comprometo, me gustaría insertar algunos módulos/directorios en el repositorio de Google Code. Sin embargo, solo quiero actualizar desde el repositorio local. ¿Hay alguna manera de hacerlo automáticamente? mi IDE está emacs 23.svn commit to multiple repositories

Gracias

Respuesta

6

Esto es how the SVN book recommends lo haces. Parece bastante doloroso y básicamente gira en torno a tener una copia de trabajo para cada repositorio y copiar literalmente los cambios entre los dos (probablemente también podría hacer esto con los parches de SVN).

Como alternativa, puede look into using SVK (que es la capa de distribución para SVN, agregar la funcionalidad de Git-ish a SVN) para configurar el repositorio mirroring or merging en repositorios externos. Cuidado, la documentación para SVK está un poco desorganizada. Aparentemente, la ayuda de línea de comandos es buena.

4

Cada copia de trabajo en puntos de SVN a un repositorio. Lo que podría hacer es usar svn switch para cambiar su repositorio para apuntar al repositorio de Google Code, antes de actualizar y confirmar los directorios que desea almacenar allí. Luego puede volver a enfocar su copia de trabajo en su repositorio estándar. Esto, por supuesto, depende de que las estructuras de directorios sean compatibles en ambos repositorios.

1

Si no se lo entiende, el conmutador SVN no es una solución.

¡El conmutador SVN no solo conecta (o conmuta) un directorio de trabajo de un repositorio a otro repositorio diferente! También realiza una actualización silenciosa (o pago) desde el nuevo repositorio. Por lo tanto, si no me equivoco, cualquier modificación local en el directorio de trabajo se perderá, ya que el nuevo repositorio lo sobreescribirá.

Parece que debe tener una copia de trabajo para cada repositorio y copiar literalmente los cambios entre el directorio de trabajo original a los demás.

1

Parece que hay una mejor solución al usar svnsync.

  1. Inicialice un repositorio espejo para la sincronización desde el repositorio de origen. Esta es la primera svnsync operación se ejecuta en un repositorio de los posibles espejo:

    svnsync initialize MIRROR_URL SOURCE_URL 
    
  2. transferencia de todas las revisiones pendientes desde el repositorio de código fuente en el repositorio de espejo:

    svnsync synchronize DEST_URL 
    
  3. Sólo para ocasiones especiales o seleccionadas para copiar revisiones pendientes, como se explica en el manual:

    svnsync copy-revprops DEST_URL [REV[:REV2] 
    
Cuestiones relacionadas