¿Cómo evitas trabajar en la rama equivocada?


27

Por lo general, tener cuidado es suficiente para evitar problemas, pero a veces necesito verificar dos veces la rama en la que estoy trabajando ( por ejemplo, "hmm ... estoy en la devrama, ¿verdad?") Comprobando la ruta de control de fuente de forma aleatoria archivo.

Al buscar una manera más fácil, pensé en nombrar los archivos de la solución en consecuencia ( por ejemplo MySolution_Dev.sln ) pero con diferentes nombres de archivo en cada rama, no puedo fusionar los archivos de la solución.

No es un gran problema, pero ¿hay algún método o "pequeño truco" que uses para asegurarte rápidamente de que estás en la rama correcta? Estoy usando Visual Studio 2010 con TFS 2008.


2
Esto suena como un buen candidato para que se escriba una extensión VS 2010 que permita algún tipo de señal visual configurable para indicar la rama. Quizás coloreando el fondo del Explorador de soluciones según la configuración del usuario (haría verde para Dev, amarillo para QA y rojo para Prod).
Jesse C. Slicer

Buena idea, incluso un indicador en la barra de título de VS ayudaría.
henginy

1
Yo diría que debería ser bastante efectivo. Tengo mi indicador de bash configurado para incluir mi rama git y si los archivos de origen están limpios o si necesitan un
registro

¿TFS no tiene algo equivalente a git statuso hg status?

Utilizo la interfaz de usuario VS para las operaciones TFS, por lo que realmente no tengo una idea.
henginy

Respuestas:


16

Estoy usando este http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6

Actualiza su título a, por ejemplo:

Desarrollo \ myproject

o

Main \ myproject

o

Release \ myproject

Espero eso ayude


Eso parece hacerlo, lo intentaré ..
henginy 02 de

Yo uso esta extensión exactamente para este propósito. De hecho, estaba a punto de publicar el enlace, cuando vi que ynnok ya lo había hecho.
Bobson

1
Terminé usando este como lo puedo ver en el título en qué rama estoy. ¡¡¡Realmente asombroso!!!
Piotr Kula

Sí, de hecho es muy conveniente!
henginy

16

Nombre los directorios de trabajo de manera diferente. Es decir, si su proyecto se titula "MY_PROJECT", cree un directorio de trabajo diferente para cada rama. Si hay una rama llamada "dev", necesitaría un directorio para troncal y un directorio para dev, como este:

~/henginy/projects/MY_PROJECT-trunk
~/henginy/projects/MY_PROJECT-dev

Los directorios que funcionan realmente se nombran de manera diferente. Pero con un Visual Studio ya abierto (por ejemplo, después de tomar un café y volver a mi escritorio) tengo que verificar la ruta de un archivo para ver el directorio. Entonces, ¿supongo que es la forma más simple y no hay escapatoria?
henginy

2
@henginy Esa es una buena aclaración. Para determinar eso en Visual Studio, coloco el cursor sobre la pestaña de un archivo abierto. Mostrará una información sobre herramientas de la ruta completa del sistema de archivos, a partir de la cual puedo determinar si la raíz es "-dev" o "-trunk". Pruebe eso y vea si funciona para usted.
Matthew Rodatus

1
Sí, eso es exactamente lo que "Compruebe la ruta de control de código fuente de un archivo al azar", y yo estoy tratando de encontrar una manera más rápida :)
henginy

@henginy Oh, cierto. Lo dijiste en OP. No sé de una mejor manera fuera de mi cabeza. Parece que no he mejorado tu situación en absoluto. :-(
Matthew Rodatus

Debería haberlo aclarado mejor en mi pregunta. ¡Gracias por tu ayuda!
henginy

8

No trabajo en una rama genérica de desarrollo o troncal.

SIEMPRE trabajo en ramas de características. Cuando se realiza una función, sigo estos pasos.

  1. Explorador de control de código abierto.
  2. Fusionar desde el desarrollador a la rama de características actual.
  3. Solucione cualquier conflicto y asegúrese de que todo siga funcionando.
  4. Regístrese nuevamente. Combinar función en la rama de desarrollo.
  5. Solución de desarrollo abierta.
  6. Checkin dev branch.
  7. Cerrar solución de desarrollo.
  8. Deje que CI se desarrolle e implemente.

Solo tengo la rama de desarrollo abierta durante unos minutos a la vez y la cierro de inmediato.


7

Puede crear un archivo vacío en cada rama, por ejemplo THIS_IS_TRUNK.txt en troncal y THIS_IS_DEV.txt en DEV.


2
Eso realmente podría funcionar ... Especialmente con un guión bajo delante del nombre del archivo para subirlo en el explorador de soluciones.
henginy

6

Hago mucho de mi (D) VCS trabajo desde la línea de comandos. Recomiendo encarecidamente que muestre su mensaje en el lugar donde se encuentra. Por ejemplo, mi mensaje cuando en un repositorio de Git se ve (también hago esto para SVN):

[BranchName]RepoTop/path/to/current/wd >>

Y si el repositorio está actualmente sucio (cambios no confirmados):

[BranchName!!]RepoTop/path/to/current/wd >>

También tengo el fondo configurado en rojo si ha iniciado sesión en productos, cosas así. Encuentro que las notificaciones visuales simples son súper efectivas para mí.

Usted mencionó que a menudo ve esto más después de regresar a su computadora. Encuentro una nota de publicación, con mi enfoque actual (rama, número de error, función) pegado en mi teclado cuando me voy, para ser súper efectivo al permitirme volver a trabajar rápidamente, en lugar de recrear lo que sea que hice la última vez .


4

Hay una extensión gratuita de Visual Studio llamada TFS Solution Info que puede ayudar con esto. Le muestra la rama actual y el espacio de trabajo en una pequeña ventana que puede acoplar / anclar donde lo desee.


Luce increíble pero admite VS2012
Piotr Kula

3

He estado usando la extensión VSCommands (con Visual Studio 2012, pero hay una versión 2010) y convenientemente coloca el nombre de la rama en la esquina superior izquierda de la pantalla, así como en el explorador de soluciones.

No afiliado al producto de ninguna manera, solo un usuario feliz.


1
Se ve muy mal, lamentablemente, tienes que pagar por todas las cosas adicionales que podrían no ser necesarias :(
Piotr Kula

2

Evito trabajar en la rama incorrecta haciendo casi todo en una rama (en el tronco - por la llamada estrategia de ramificación "tronco inestable" ).

Los casos en los que me veo obligado a actualizar ramas son bastante raros: se trata de correcciones de errores previas y posteriores a la producción (el código de candidato de producto está aislado en las ramas). Dado que estas correcciones también deberían estar en el enlace troncal, normalmente las redacto, pruebo y verifico allí mismo en el enlace troncal, luego puerto a rama de producción. La portación como regla implica solo una copia sencilla de 1 a 5 archivos para bifurcar y crear verificación.

  • También soy algo afortunado de que en la mayoría de mis proyectos la gerencia prefiera convencer a los clientes de que usen versiones más nuevas en lugar de parchear versiones anteriores, lo que hace que la parte de posproducción de las actualizaciones en las sucursales sea casi mínima.

De hecho, es bueno no tener que mantener versiones anteriores. En ese caso, supongo que solo usaría una rama con fines experimentales.
henginy

@henginy No puedo recordar casos en los que tuve el lujo de no tener que mantener versiones anteriores. Sin embargo, la actitud de la gerencia puede hacer una gran diferencia aquí: dependiendo de ello, por ejemplo, uno puede implementar 1-2 revisiones / año en sucursales más antiguas o meterse con estas la mitad de todo el tiempo
mosquito

1

Una respuesta específica depende del software de control de versiones que esté utilizando, pero generalmente hay un comando que le permite ver fácilmente la rama en la que está trabajando. Por ejemplo, con Subversion, use el svn infocomando en un directorio para ver la URL de esa rama. Si está más interesado en un archivo en particular, también puede especificarlo:

caleb-dev$ svn info foo.c 
Path: foo.c
Name: foo.c
URL: https://svn.mycompany.com/repo/sample/branches/caleb-dev/foo.c
Repository Root: https://svn.mycompany.com/repo/sample
Repository UUID: d62f7aef-3ad2-6098-12a-c16647d854ab
Revision: 1042
Node Kind: file
Schedule: normal
Last Changed Author: caleb
Last Changed Rev: 1031
Last Changed Date: 2011-06-07 15:28:27 -0400 (Tue, 07 Jun 2011)
Text Last Updated: 2011-06-08 03:08:12 -0400 (Wed, 08 Jun 2011)
Checksum: 123456789098765432123456789098

Desde la URL, puedo ver que mi copia de foo.c está en la rama caleb-dev.

No necesito hacer eso muy a menudo porque mi directorio local tiene el mismo nombre que la rama. Un vistazo rápido a mi línea de comando suele ser suficiente para confirmar que estoy en el directorio correcto y, por lo tanto, estoy trabajando en la rama correcta.


1

Muchas respuestas aquí ya, pero ninguna que toque la solución simple que tenemos donde trabajo: para cada rama, cree una nueva máquina virtual que contenga un entorno de desarrollo y realice el pago desde la rama adecuada. Solo tiene que hacer eso y hacerlo bien una vez, y luego simplemente cambia las máquinas virtuales para cambiar de rama.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.