2011-03-09 16 views
5

Migramos desde un sistema de control de fuente diferente. Los últimos archivos de cada sucursal se registraron en las carpetas en el control de origen de TFS 2010, y utilizamos el comando "convertir a sucursal" en cada carpeta de sucursal de nivel superior. Desde los registros iniciales, se trabajó en el tronco y las ramas.Recrear la estructura de bifurcación en el control de origen TFS cuando solo están disponibles los últimos archivos

Sin embargo, no podemos hacer fusiones desde la GUI porque TFS no comprende las relaciones entre las ramas. El comando "reparent" no ofrece ninguna opción. ¿Hay alguna manera de usar tf merge /baseless /discard /recursive para configurar las relaciones? ¿Esto causará problemas ya que ha habido registros después de los iniciales?

+0

Estamos a punto de actualizar a TFS 2010 y debido a problemas con la base de datos en nuestra instalación de 2008, hemos decidido instalar una copia nueva, para evitar arrastrar potenciales bombas de tiempo esperando para estallar, entonces tendremos la el mismo problema. Esperando ansiosamente cualquier buena respuesta en este caso. –

Respuesta

10

Acabo de pasar los últimos 6 meses migrando 100 o más repositorios de VSS a TFS, así que siento tu dolor! Solo he hecho esto en TFS 2008 pero no hay ninguna razón por la que no debería funcionar en 2010.

Me gustaría tratar una fusión sin base como último recurso, ya que estarás atrapado haciendo fusiones desde la línea de comandos.

El truco consiste en establecer la relación entre las ramas antes de importar el código.

(Voy a usar un simple rama dev solo como ejemplo, pero usted debería ser capaz de utilizar la misma teoría, independientemente del número de ramas)

  1. Crear un nuevo proyecto de equipo, crear un " tronco "luego ramificar a" dev ". Ahora debería tener dos ramas vacías.

  2. Importe su código en "trunk" y "dev".

  3. Combinar de "tronco" a "dev", es casi seguro que tendrá un montón de conflictos, TFS debe ser lo suficientemente inteligente como para ignorar los archivos y carpetas que son los mismos, pero no siempre. Usted tendrá que decidir cuál de los archivos en conflicto desea mantener (por lo general los de la rama "dev" pero es probable que desee tener a alguien que entienda el código a la mano para tomar la decisión)

Ahora deberías tener 2 ramas llenas de código que tienen una relación.

Si tiene varias ramas "dev", entonces creo que siempre debe fusionarse primero entre "troncal" y "dev", esto configura la relación y le da la opción de mantener la versión del código en "dev" ya que esto es probablemente más reciente que la versión en "trunk"

En su caso específico, seguiría lo anterior pero en lugar de importar sus archivos (paso 2) desde el sistema de archivos, podría ramificar el código de su "viejo "proyecto de equipo para la nueva es decir

rama $/oldTeamProject/Devbranch a $/NewTeamProject/DevBranch y $/oldTeamProject/Trunk a $/NewTeamProject/Trunk

luego se funden en $/NewTeamProject/Trunk a $/NewTeamProject/DevBranch

que he hecho esto un par de veces en TFS 2008 y funciona como un encanto (excepto el dolor de hacer la primera resolución de conflictos). Una vez dicho esto, recomendaría hacer una migración de "prueba", solo para asegurarme de haber cubierto todos los ángulos.Si esto funciona bien, entonces puede mantener el resultado; si no, debería haber aprendido algunas lecciones para la migración real :-)

Si ha cambiado el nombre de cualquier archivo o carpeta, TFS no sabrá establecer la relación y obtendrá duplicación en su rama "dev" después de la fusión. Tendrá el mismo problema si realiza una fusión sin base en el nivel de la carpeta. No hay una forma fácil de evitar esto, me temo. solo tiene que estar atento a todo lo que parezca slike y haya sido renombrado y resolverlo manualmente después de la fusión.

+0

Gracias por la estrategia detallada. ¿Cómo se ven los cambios pendientes en la versión "rama" del paso 2? ¿Habrá alguno? Definitivamente voy a dar una oportunidad en un arenero. Tenemos muchos cambios de nombre y movimos archivos/carpetas. Esto va a ser feo :). –

+0

Al bifurcar "dev" del proyecto del antiguo equipo al nuevo, debería parecerse a cualquier otra operación de sucursal, por lo que verá muchos cambios pendientes de "sucursal, agregue", que el registro no debería ser doloroso. Sugerí ese enfoque, ya que es posible que desee mantener el historial desde que realizó la migración inicial. Si no lo hace, entonces podría ser más fácil simplemente obtener lo último del proyecto "viejo" y copiarlo en su nuevo espacio de trabajo, y luego agregar desde allí. El paso 1 (configurar la relación) y el paso 3 (resolver los conflictos) son los bits más importantes. Cómo se agrega el código a las sucursales depende de usted. ¡Buena suerte! –

+0

@JamesReed - Espero que todavía me puedan dar una respuesta ya que este es un hilo viejo. Hago esto para una migración entre VSO (destino) y otra instancia alojada de TFS (tenemos acceso limitado). Solo para verificar que entiendo su proceso 2. Importe su código en 'trunk' y' dev' - ¿quiere decir copiar el código del FS a las respectivas ramas TFS creadas, compruébelo como está, y luego (3) ejecutar la fusión TFS de 'trunk' a' dev'? – Igor

Cuestiones relacionadas