¿Cuáles son las grandes diferencias entre TFVC (TFS Version Control) y Git para el control de código fuente cuando se usa Visual Studio 2013?

101

Hay toneladas de preguntas y respuestas sobre Git versus TFVC Source Control, pero ninguna respuesta actual cubre la integración de Git en Team Foundation Server / Service que puedo encontrar.

Estoy comenzando el desarrollo de pastos verdes usando una amplia variedad de lenguajes (C #, C ++, PHP, Javascript, MySSQL) usando Visual Studio 2013. En el futuro, habrá algo de desarrollo iOS. Estoy muy familiarizado con SVN, VSS y TFVC para el control de fuentes. Sin embargo, nunca he usado Git. Prefiero TFS para la gestión de procesos / desarrollo ágil ... No es perfecto, pero se integra bien en Visual Studio.

Entonces, para ayudarme a decidir entre estos dos sistemas ...

¿Cuáles son las grandes diferencias entre TFVC y Git para el control de código fuente cuando se usa Visual Studio 2013?

  • ¿El único beneficio en mi caso es un repositorio local (sin decir que sea insignificante) y soporte para el desarrollo de iOS?
  • Es el único inconveniente de Git, la interfaz de línea de comandos (algunos dirían que no es un inconveniente ;-P).
  • ¿Ha experimentado en la GUI de Visual Studio 2013 para Git? ¿Es eso suficiente para admitir la ramificación / fusión básica sin la interfaz de línea de comandos?
  • ¿Existe una guía de inicio detallada para Git que muestre que Git se usa con Visual Studio 2013? Microsoft tiene un video para integrar un repositorio de Git existente en Visual Studio 2013, pero estoy buscando comenzar desde cero con Git y VS 2013.

No estoy buscando un libro aquí, sino solo algunas viñetas y quizás algunos enlaces relevantes de personas que han usado TFVC y Git.

Greg Rallador
fuente

Respuestas:

115

¿Cuáles son las grandes diferencias entre TFS y Git para el control de código fuente cuando se usa VS 2013?

MSDN tiene una página muy extensa sobre todas las características y diferencias entre Team Foundation Version Control y Git .

¿El único beneficio en mi caso es un repositorio local (sin decir que eso sea insignificante) y soporte para el desarrollo de IoS?

No, hay mucho más, pero a menudo son escenarios avanzados de Git. El repositorio local, el soporte sin conexión y la fidelidad local total en el historial son increíblemente poderosos, lo obtiene de inmediato con Visual Studio. ¡Hay algunas otras características que también son geniales! La capacidad de ramificarse y fusionarse de un repositorio a otro es muy poderosa. Te recomiendo que busques el libro Pro Git para esos. Git en TFS es solo otro servidor de git, tiene prácticamente todas las características que tiene el Git estándar.

La capacidad de reescribir el historial antes de fusionar le permite eliminar o combinar varios conjuntos de cambios más pequeños, para que el historial sea más limpio y más fácil de leer como humano.

Es el único inconveniente de Git, la interfaz de línea de comandos (algunos dirían que no es un inconveniente ;-P).

TFVC también tiene una línea de comandos, la gente simplemente no la usa. Para las personas que quieren usar Git y nunca hacer mucho más de lo que hace TFVC, probablemente no tendrán que abandonar la interfaz de usuario, aunque no obtendrán muchas de las funciones interesantes ...

Puede haber algunos otros inconvenientes, principalmente debido al hecho de que es diferente a lo que la gente está acostumbrada. No es muy difícil pegarse un tiro en el pie si no te tomas el tiempo para aprender lo que hace git cuando haces las cosas. Cosas como Rebase y Squash son realmente poderosas y crean un historial muy limpio, pero pueden dejar a las personas con el problema de que ya no pueden fusionarse si se usan incorrectamente. TFS tiene la capacidad de poner algunas configuraciones de seguridad para quitarle los derechos para tomar decisiones muy estúpidas en un repositorio de git .

Un complemento muy interesante para los usuarios de Git en Windows es PoSHGit . proporciona autocompletado de comandos en la línea de comandos de Powershell.

¿Ha experimentado en la GUI de VS 2013 para Git? ¿Es eso suficiente para admitir la ramificación / fusión básica sin la interfaz de línea de comandos?

Tiene todo lo que necesita para operaciones básicas. Pero necesitas poder visualizar las diferentes ramas para saber qué está pasando. Dado que el servidor Git y el repositorio local son solo Git, cualquier cliente git puede ayudarlo aquí. SourceTree es una opción aquí. El cliente de Git para Windows es otro.

Para operaciones estándar, check-in, check-out, merge, branch (o push, pull, fetch, commit, merge) la interfaz de usuario funciona bien.

¿Existe una guía de inicio detallada para Git que muestre que Git se usa con VS 2013? MS tiene un video para integrar un repositorio de Git existente en VS 2013, pero estoy buscando comenzar desde cero con Git y VS 2013.

Comenzar con Git está disponible en varios lugares ... Estas son algunas opciones:

Otras buenas lecturas:

Y algunas herramientas que vale la pena instalar:

jessehouwing
fuente
3
Los ALM Rangers pronto lanzarán su guía de Git para usuarios de TFVC aquí: vsarbranchingguide.codeplex.com/releases . La versión Beta actual aún no lo tiene, espero que caiga con el próximo lote :).
jessehouwing
8
Después de casi un año desde mi publicación original, pensé en hacerles saber a todos que hemos estado usando VS2013 con Git con éxito. Me encanta la capacidad de crear varios repositorios en un solo proyecto de equipo. Hemos tenido algunos problemas al fusionarnos. En varios casos, la combinación automática elige incorrectamente. Entonces, lo que parece una fusión exitosa realmente no lo es. Ahora comprobamos todos los archivos fusionados. Además, hay ciertos casos en los que la combinación se ahoga y arroja un error en la interfaz de usuario de VS (conflicto de combinación de libgit2). Para solucionarlo, tenemos que pasar al indicador de cmd y ejecutar un git pull (no es divertido).
Greg Grater
1
Sé que hay una solución para ese último error como parte de la Actualización 4. Y que hubo casos en los que la configuración de la línea final difirió entre los desarrolladores que pueden causar que ocurran estos problemas.
jessehouwing
5
Hemos estado usando VS 2013 con la Actualización 4 desde que cayó hace meses y parece haber solucionado todos nuestros problemas de Git desde la GUI. Tenemos el hábito de extraer regularmente del servidor remoto, lo que ayuda a mantener nuestros repositorios locales actualizados. Además, MS ha estado pasando por varias actualizaciones positivas en los tableros de tareas pendientes de productos últimamente. Directamente desde el tablero, ahora puede editar la descripción, asignar, establecer el estado y ajustar la prioridad / orden del elemento.
Greg Grater
1
Los enlaces "Git vs TFVC" están vinculados a "Empezar a utilizar Git". ¿Significa ahora que es mejor usar Git sobre TFVC? ; D encontró un nuevo enlace: visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
Martin Schneider
17

Para aclarar una terminología mixta confusa que se usa mucho con TFS

Team Foundation Server (TFS) es una herramienta de gestión del ciclo de vida de la aplicación, que incluye un sistema de control de versiones de origen (VCS) componente de .

El componente VCS que usa TFS es principalmente Team Foundation Version Control (TFVC)

Entonces, la pregunta sería TFVC vs Git

(De hecho, TFS admite Git como una opción de VCS ).

Entonces, la pregunta es: TFVC vs Git

jessehouwing tiene una gran respuesta que cubre esto con buen detalle, así que por favor haga referencia a eso

En cuanto a elegir cuál usar, en mi opinión Git gana

  1. Es liviano: fácil de configurar y comenzar a usar.
  2. Su naturaleza distribuida significa que es muy resistente a los desastres, alguien siempre tendrá una copia del repositorio.
  3. El trabajo sin conexión es simple, estás trabajando con tu propio repositorio completo. Puede realizar cambios, revertir, examinar el historial, etc. Solo necesita estar en línea cuando desee sincronizar con un repositorio remoto.
  4. En TFS no existe una forma sencilla de guardar el estado de sus cambios (adiciones de archivos, modificaciones, eliminaciones de archivos) y cambiar a otro estado de código. (Por ejemplo, trabajar en dos funciones y alternar entre ellas). En git, simplemente revisa una rama diferente.
James Wierzba
fuente
1
TFS tiene ramas y conjuntos de estantes (lo que permite el n. ° 5) e incluso puede configurar sus proyectos para usar git si realmente lo desea. TFS VCS también tiene una línea de comando para #. No es liviano, pero hace mucho más listo para usar que git, ya que tiene una gestión completa de proyectos / seguimiento de errores / seguimiento del trabajo / gestión de versiones / gestión de compilaciones / política de registro / pruebas integradas.
Matthew Whited
@MatthewWhited Seguro que es posible, pero es extremadamente engorroso en comparación con git, debido a su implementación basada en directorios frente a la implementación basada en gráficos de git. Tenga en cuenta que dije que no hay simpleforma de hacerlo.
James Wierzba
@MatthewWhited Además, estoy de acuerdo con las herramientas adicionales del ciclo de vida de la aplicación, pero estoy limitando mi respuesta solo a las soluciones de control de la versión del código fuente.
James Wierzba
1
IDK ... Encuentro que TFS es bastante simple de usar. Aunque también me disgustan todas las ramas creadas por GIT, ya que hace que sea más complejo garantizar que todos tengan el mismo código con una rotación rápida para algunos y lentos para otros.
Matthew Whited
No lo se. GIT es simplemente demasiado complicado para la tarea que pretende realizar y muy poco intuitivo (¿por qué es una solicitud de extracción y no una solicitud de inserción?). El control de fuente TF es muy simple y se puede explicar a cualquier desarrollador nuevo de mi equipo en minutos. También veo que fomentar el trabajo local es una gran desventaja dentro de un equipo e incluso individualmente. ¿Cómo evitas perder tu trabajo en Git sin ensuciar el proyecto con ramas? (Para esto hay estanterías en TFS - EN EL SERVIDOR)
Cesar
4

Es el único inconveniente de Git, la interfaz de línea de comandos (algunos dirían que no es un inconveniente ;-P).

Si no se siente cómodo con la interfaz de línea de comandos, hay varias interfaces GUI disponibles para Git. Git en sí contiene una herramienta GUI del navegador de repositorio llamada gitky git-gui- una GUI para git. Luego están las aplicaciones de terceros como git-cola , TortoiseGit y otras .

Kralyk
fuente
2
Por supuesto, Visual Studio proporciona una GUI para Git. Pero siempre hay ocasiones en las que es posible que desee sumergirse en la línea de comandos para hacer cosas que de otro modo serían imposibles. Una GUI que expone todos los comandos de Git es tan difícil como la línea de comandos.
jessehouwing
Hay herramientas eléctricas de línea de comandos. Por ejemplo, para eliminar completamente una rama de la existencia.
Ingeniero