¿Cómo fusionar dos bases de código independientes, pero similares, en un representante de SVN?

yo tengo

/ var / www / cool_codebase en www.example.com Y tengo

/ var / www / cool_codebase en www.example.net

Las bases de código son para la misma aplicación web que se ejecuta en diferentes serveres. Existe cierta especialización entre las bases de código (bits y bobs específicos del cliente, etc.), pero no demasiado. Una base de código tiene files que la otra no tiene y viceversa. Algunos bits de progtwigción son diferentes también.

He descargado cada base de código en mi server local y mi pregunta es:

¿Cómo puedo fusionar estas dos carpetas en una sola carpeta y luego asignarla como una "gran base de código unificada" en mi SVN?

¿Debería poner cada base de código en su propio repository SVN, y luego fusionar estos repositorys separados? ¿O puedo fusionar las bases de código antes de SVN, usando algún command de Linux, por ejemplo, y luego asignarlo a SVN?

Cualquier idea o ayuda sería muy apreciada.

Debo añadir que el resultado final sería UNA "gran base de código unificada" que podemos implementar tanto en www.example.com como en www.example.net sin inconvenientes.

(PD. Sí, me doy count de que haga lo que haga, tendré que editar algunos de los files y hacer que la progtwigción sea "genérica" ​​y demás. No me importa esto. Simplemente estoy buscando forms de automatizar o semi -automatizar todo el asunto.)

La fusión de las bases de código después de asignarlas a svn tiene la ventaja de que usted tiene acceso a su historial después: Podrá ver qué partes del código provienen de la versión ".com", que desde ".net", y qué cambios se hicieron en el process de combinar los dos.

Una forma de hacer esto:

  1. Importe la base de código ".com" en un nuevo repository como trunk.
  2. Crea una twig desde ese tronco: svn cp svn://repo/trunk svn://repo/branches/net
  3. Verifique la twig, copie el código ".net", haga svn add y remove según sea necesario para que la twig contenga exactamente la versión .net. Comprométalo.
  4. Mira el tronco y svn merge ^/branches/net .
  5. Revisa cuidadosamente el resultado de svn diff y edita el checkout del trunk para que se convierta en tu gran base de código unificada.

Lo difícil que es el paso 5 dependerá mucho de las bases de códigos específicos.

Si tiene acceso a una versión anterior de "ancestro común", de la cual derivan ambas bases de código, entonces debe verificar esa versión en el paso 1 y luego verificar la versión ".com" en el enlace antes del paso 4. Esto permite a svn hacer una "combinación de 3 vías" automática en el paso 5, lo que puede ahorrarte un montón de trabajo manual.

De cualquier forma que lo haga, se necesitará una edición manual de files. Eso es mucho más fácil con una buena herramienta de combinación interactiva, como meld , que también es una gran alternativa a svn diff simple para el paso 5 anterior.

Tenga en count que meld tiene la capacidad de a) comparar treees de directorys completos yb) comparar y editar tres versiones a la vez. Por lo tanto, puede señalarlo en un directory que contenga el código ".com", uno que contenga el código ".net" y su directory de trabajo para ver las tres versiones una al lado de la otra.

    Intereting Posts