2010-02-09 12 views
12

Actualmente estoy trabajando en un proyecto que utiliza TFS como control de origen. Estoy en el medio de implementar una pieza de funcionalidad, pero estoy bloqueado por el trabajo que debe hacerse con recursos externos. Como la funcionalidad no está completamente completa, no puedo verificar los cambios sin romper la compilación. Entonces, en lugar de esperar un par de días mientras el trabajo de bloqueo finaliza, quiero trabajar en algunos defectos.Estantería vs Espacios de trabajo en TFS

Para hacer este trabajo de manera aislada de mis otros cambios, estoy trabajando en los defectos en un segundo espacio de trabajo que acabo de crear.

Después de usar un segundo espacio de trabajo para aislar mis cambios, un compañero de trabajo me preguntó por qué no acababa de archivar mis cambios. Después de leer un poco sobre las estanterías, parece que esta es la solución preferida para situaciones como la mía. Mi pregunta es ¿qué situaciones, si las hubiera, crearías múltiples espacios de trabajo y qué situaciones deberías usar para dejar de lado? Hay algunos mensajes sobre shelving, pero no veo mucho sobre el tema de espacios de trabajo.

Por cierto, tengo la idea de crear un segundo espacio de trabajo here.

Respuesta

11

Una nueva sucursal sería probablemente la mejor manera de hacerlo. Pero, para responder a su pregunta, una de las diferencias clave entre el almacenamiento en estantería y el uso de un espacio de trabajo de differnet es que, cuando lo deja de lado, vuelve a insertar su código en TFS, por lo que está respaldado. Lo que está en su espacio de trabajo es justo lo que tiene en su máquina; si lo pierde, se va.

Utilizamos la bifurcación mucho en mi tienda, y como resultado, no he visto muchos usos para la estantería.

Sin embargo, he encontrado un caso en el que me ha sido muy útil: A menudo reboto entre 2 máquinas de desarrollo diferentes (una en la oficina, otra en casa, conectada a través de VPN). Si estoy trabajando en algo, y quiero transferirlo de casa al trabajo, o viceversa, a menudo uso la estantería. Puedo archivarlo de una máquina y deshacerme de ella de la otra. Hago esto cuando estoy en medio de un cambio, y el registro podría romper la compilación o interrumpir a otros desarrolladores.

+0

Ah, así que al menos debería dejar de lado mis cambios en el espacio de trabajo original para hacer una copia de seguridad de los cambios. Además, un buen punto sobre el uso de la estantería para mover los cambios entre las PC. Pude ver que ser muy útil. – JChristian

1

Estanterías es la opción ideal. Estanterías le permite realizar cambios en masa en TFS fuera de la compilación normal y recuperarlos más tarde por su nombre. Múltiples espacios de trabajo no es una solución para lo que estás haciendo. Múltiples espacios de trabajo son buenos si mantiene versiones diferentes de un producto y necesita trabajar en ellas, p. digamos que tiene un producto 4.0 y 5.0 y necesita aplicar una corrección de seguridad a ambas versiones. Las estanterías son geniales cuando desea realizar cambios pero no los compromete de inmediato.

+0

¿No se utiliza la bifurcación para trabajar en múltiples versiones? ¿O un individuo tendría un espacio de trabajo separado para cada sucursal? – JChristian

+0

Sí, pero utilizaría diferentes espacios de trabajo para llegar a cada rama. –

3

Aquí está hablando de dos conceptos completamente diferentes. Cuando archivas el código, lo estás guardando en TFS, pero no lo estás registrando en ninguna rama en particular. La creación de un espacio de trabajo diferente solo configura una nueva carpeta local en sus máquinas de desarrollo y guarda los archivos en su rama allí. Cuando haces un check-in, aún puedes tener conflictos.

¿Por qué no crear una nueva rama de su código. Puede trabajar en esa sucursal y registrarse sin pisar los cambios de otra persona, porque está ingresando a su propia rama del código. Luego, cuando haya completado los cambios y otros hayan completado los de la rama principal, puede fusionar los cambios en la rama principal.

+0

No había pensado en crear otra sucursal. ¿Sugiere que debería haber creado una segunda rama para la funcionalidad bloqueada en la que estaba trabajando y luego usar la rama principal para trabajar en los defectos? – JChristian

+1

@JChristian - No digo que debas. Pero una alternativa habría sido crear una rama para que trabajes o para que trabajen los recursos externos, y luego fusionarlos cuando termines. A menudo he hecho esto cuando estoy trabajando en el próximo lanzamiento de una aplicación, o si los cambios que voy a hacer en la versión actual son significativos, y quería trabajar en ellos de forma aislada. –

Cuestiones relacionadas