2010-01-13 15 views
21

Siempre he usado SVN en mi pasado, y ahora que hemos pasado de la fase inicial de un proyecto, necesitamos descubrir nuestro proceso de ramificación para futuras mejoras.Branching vs. Shelves en TFS

Al leer esto, vemos que TFS tiene estanterías.

¿Cómo se comparan? ¿Cuáles son los grandes problemas en cada uno?

En general, ¿cuál es el preferido y por qué?

Respuesta

19

Shelvesets son por usuario y diferente almacenan en el control de la fuente - que no es posible fusionar shelvesets, no hay historia, etc. La única acción posible es unshelving; ni siquiera puede fusionar archivos mientras lo hace. Por lo tanto, solo lo usamos como un almacenamiento temporal para las cosas que aún no están terminadas y, por lo tanto, no se pueden registrar en una sucursal.

Por lo tanto, debe utilizar las ramas ;-) tal vez una rama principal y diferentes ramas de desarrollo para las características & corrección de errores.

+2

Esa es parte de la información que estaba buscando. Específicamente la fusión de estantes. –

+0

Aclararé que, si bien no puede fusionarse mientras realiza la acción sin estante, puede fusionar el conjunto de estantes en el punto de registro. La fusión siempre ocurre en el momento del check-in, por lo que se le ofrecerá la oportunidad de fusionar los cambios establecidos en ese punto. –

+0

@Matt Usted _puede combinar archivos en unshelving, pero debe usar TFS Power Tools. Ver 'tfpt unshelve'. –

5

La estantería y la bifurcación son dos cosas totalmente diferentes. Estanterías le permite almacenar todos sus cambios en TFS, pero en realidad no están registrados en ninguna sucursal en particular. Sus cambios simplemente se guardan con un nombre de pila. Esto es realmente muy útil porque es una gran manera de hacer revisiones de código. Podría haber hecho cambios a tal vez 10 archivos diferentes. Crearé un conjunto de estos cambios con un nombre dado. Luego le pediré a alguien más que revise mi estante. Puedo descartar esos cambios o eliminar el conjunto de archivos.

La ramificación es un proceso mediante el cual se realiza una copia completa de un tronco de código y se le asigna un nombre y una ubicación. Luego puede registrar entrada/salida/fusionar contra la rama del código. Esto es genial cuando se trabaja en la próxima versión de una aplicación. Puede crear una sucursal para trabajar en nuevas funciones.

Aquí es una buena explicación de shelvesets: http://msdn.microsoft.com/en-us/library/ms181403(VS.80).aspx

11

Estanterías y ramificaciones no son el mismo concepto.

La ramificación toma una base de código y la "divide", básicamente haciendo una copia. Los equipos de desarrollo pueden trabajar en sus propias ramas (por ejemplo) y luego todos los cambios pueden fusionarse nuevamente en una rama de origen. Las sucursales solo se pueden fusionar en una rama principal en TFS.

Estanterías permite a los desarrolladores verificar el código en el sistema de control de origen en una "estantería". El código no está registrado en la rama principal. Si un administrador de compilación u otro desarrollador "se pone al día", no obtendrá el código archivado por defecto. La estantería se almacena de forma segura en el control de la fuente como todos los demás códigos, simplemente no está en la rama. Otros desarrolladores pueden bajar los estantes para ver los efectos. En algún momento, los cambios se verificarán en la rama principal y formarán parte de un conjunto de cambios.

sugiero este libro: http://www.amazon.com/Team-Foundation-Server-2008-Action/dp/1933988592/ref=sr_1_1?ie=UTF8&s=books&qid=1263417920&sr=8-1

Tiene una explicación muy simple, pero eficaz de estanterías, la fusión y varios modelos de ramificación.

5

Los conjuntos de estantes son una colección de cambios pendientes, comentarios y elementos de trabajo asociados.

Escenarios:

  • de copia de seguridad
  • se muda temporalmente cambios para trabajar en un tema diferente
  • código remoto revisa
  • de amigos construye o coordinar los cambios

Se necesita una rama cuando su equipo de desarrollo necesita trabajar en dos copias distintas de un proyecto al mismo tiempo.

1

Una sucursal, es una copia de la sucursal principal. Puede usar una rama para decir probar una idea para hacer algo. Es genial, porque si algo sale mal, puedes descartar el original, como eliminar una copia de un archivo. Si las cosas van bien, fusiona la rama nuevamente en el original, di "Principal".

A Shelve es análogo a una carpeta temporal. Puede usarlos para una revisión de código, o como lo hacemos, o si necesita arreglar algo, de esa manera está en TFS y respaldado. Guardas el código en el que estás trabajando (dándole una etiqueta) y luego vuelves al principal. Cuando termines, intercambias Main por tu Shelve y la vida continúa sin parar.

6

Evita los estantes. Invariablemente restaurará una estantería sobre una versión más nueva de los archivos y perderá todos los cambios comprometidos. Solo use estantes cuando comience a trabajar en una sucursal estable y descubra que los cambios necesarios son más grandes que la previsión. Luego deja de lado tu trabajo, crea una sucursal y deshazte de ella.

+3

Amen a esto. Encuentro que las estanterías son peligrosas, porque a TFS no le importa nada de lo que hayas hecho desde que lo dejaste de lado.Una vez que te escondes, ese trabajo se va. –

2

Unshelving en una rama diferente no es la funcionalidad predeterminada de TFS.

Para unshelve en una rama diferente que tendrá que seguir las instrucciones de este blogpost

Esto implica la instalación de TFS2010 Power Tools VS de la galería.

0

Si por alguna razón uno no puede confirmar los cambios, se pueden archivar los cambios. Uno tiene la opción de conservar los cambios locales (es decir, mantener las copias archivadas localmente) o volver a la versión actual localmente (y los cambios solo existen en la copia archivada). Si uno mantiene los cambios localmente, las estanterías son una buena manera de mantener una versión del código en el repositorio y a salvo de un bloqueo de disco local.

Además, las estanterías son útiles cuando se han realizado muchos cambios que todavía no se han registrado, y se quiere preservar esa versión antes de embarcarse en un experimento de codificación "arriesgado y complicado". Si el experimento resulta mal y uno quiere descartarlo, uno simplemente puede desmantelar la copia archivada. Y si el experimento fue exitoso, uno simplemente puede eliminar el estante o dejar que languidezca en la oscuridad.