2009-02-24 14 views
5

Tengo dos repositorios que viven en servidores separados, llámalos repo-1 y repo-2.SVN Merge Branch de una Repo en Trunk de otra Repo

Para iniciar ambos "troncos" eran iguales:

repo-1/tronco == repo-2/tronco

cambios Mientras tanto, se estaban comprometidos a repo-1/tronco y el que estaba trabajando y comprometiendo cambios a repo-2/trunk.

Ahora necesito fusionar los cambios de repo-1/trunk en repo-2/trunk.

Pensé en copiar repo-1/trunk en repo-2/tags/r1_20090224, luego combinar esa etiqueta en mi copia de trabajo local de repo-2/trunk (es decir, c: \ dev \ repo2-trunk).

¿Alguna sugerencia sobre cómo hacer esto? Estoy tratando de utilizar TortoiseSVN y la realización de "fusionar dos árboles diferentes", he utilizado la siguiente configuración:

Desde: Repo-2/tronco Para: Repo-2/tags/r1_20090224 copia de trabajo: c: \ dev \ repo2-trunk

También intenté intercambiar el "desde" y "a" ... pero no tuve suerte. Al tratar cualquiera de estas dos opciones de combinación que sea terminar con el siguiente resultado:

  1. Si se funden desde el tronco para etiquetar (en mi copia local de repo-2/tronco) pierdo los cambios del tronco y consigo la etiqueta cambia

  2. Si me fusiono de la etiqueta al tronco (en mi copia local de repo-2/trunk) pierdo mis cambios de etiqueta y mantengo mis cambios de tronco.

¿Alguna sugerencia sobre hacer esto?

+1

@codecraig, ¿ha encontrado una solución a este problema? – vladr

Respuesta

1

Primero averigüe la revisión donde los árboles eran iguales. Luego fusione eso desde esa revisión a HEAD del repositorio repo-1 con su copia de trabajo repo-2.

Utilizando el cliente de línea de comandos que es similar a esto, si se desea fusionar los cambios entre R123 y R456

svn merge http://domain.tld/[email protected] http://domain.tld/[email protected] repos2-workingcopy 
0

SVK podría ser capaz de ayudar si usted se encuentra constantemente la gestión de múltiples repositorios con el tiempo que necesitan estar sincronizado de vez en cuando.

1

No está del todo claro, pero debe fusionar desde la base de los dos árboles, es decir, el punto en el que los dos troncos eran iguales.

Sander se me adelantó, por lo que el crédito a él, pero aquí hay un par de consejos:

  1. obtener estos dos repositorios se unieron en uno tan pronto como sea posible; Subversion en realidad no fue diseñado para funcionar así. O alternativamente pasar a un DVCS como Git o bazar o ...
  2. Si usted se pega con la subversión, convencionalmente este tipo de cosas se hace con ramas , no etiquetas. Las etiquetas se usan normalmente como puntos de marcador y no están comprometidas con.
1

Sisvn merge eran a que falle en los dos sitios/servidores:

svn: Unusable URI: it does not refer to this repository 

a continuación, utilizar el siguiente enfoque:

  1. identificar el nivel de revisión en el que repo-2 comenzó divergen desde repo-1, digamos 123, luego:
  2. svn co http://server1/repo-1/trunk pantalla
  3. svn diff -r123:HEAD http://server2/repo-2/trunk >repo2.patches
  4. patch -p0 -i repo2.patches
  5. de cualquier conflicto y les resolver
  6. svn ci --message "merged from repo-2"
+0

Entonces los dos repositorios no comparten ningún historial. Por ejemplo, repo-1/trunk existió por algún tiempo. luego repo-2/trunk se creó haciendo lo siguiente: 1. export repo-1/trunk y quemado en un CD 2. El CD se toma al servidor repo-2 y simplemente se agrega como repo-2/tronco – codecraig

+0

Ayudame. Gracias – uriDium