El mejor sistema de control de fuente para mantener diferentes versiones

Necesitamos poder mantener simultáneamente un set de diferentes versiones de nuestro sistema. Supongo que esto se hace mejor usando ramificación. Actualmente usamos TFS2008 para control de fuente, elementos de trabajo y comstackciones automáticas.

¿Cuál es la mejor solución de control de versiones para esta tarea? Nuestra organización está en process de fusionarse con TFS2010. ¿Nos dará la TFS2010 la funcionalidad que necesitamos para administrar fácilmente una serie de sucursales por versión del sistema? Necesitamos poder mantener cada versión aislada de las demás, de modo que podamos hacer testings e implementar para cada versión.

Nuestro equipo de desarrollo consta de 5 desarrolladores de .net y dos desarrolladores de Flash.

He escuchado muchas cosas sobre GIT. ¿Deberíamos considerar usar GIT en lugar de TFS para control de fuente? ¿Es posible usar TFS2010 junto con GIT? ¿Alguien tiene configuraciones similares que funcionan bien?

¡Cualquier sugerencia es apreciada!

Gracias,

Kjetil.

La razón principal por la que debes considerar Git (o Mercurial) es para:

  • su naturaleza distribuida .
  • su facilidad para fusionarse (una consecuencia, de hecho, de ser distribuido)

Si su equipo está ubicado en un sitio, y si su process de desarrollo es lo suficientemente lineal (flujo de trabajo de fusión simple), un VCS centralizado es suficiente.

A partir de ahí, TFS2010 ha realizado algunas evoluciones interesantes, especialmente en su model de ramificación , y sus otras características integradas (jerarquía de elementos de trabajo, construcción con "Gated Check-in" y basado en una "Workflow Foundation") lo hace un mejor candidato que una herramienta limitada al aspecto VCS.

Mercurial también hará el trabajo.

Aquí hay un excelente tutorial sobre esto.

TFS 2010 – sin duda. No por ser un gran sistema de contrrol de versión, sino por todo lo demás que hace. GIT lo dejará abierto para seleccionar el seguimiento de elementos de trabajo, continuous integration nuevamente. Mantener el número de proveedores (las tecnologías bajas es un núcleo para una mejor administración.

Hoy en día existen principalmente dos types de sistemas de control de versiones (VCS), los llamados VCS distribuidos y los sistemas de repositorys centrales.

Los VCS "distribuidos" más populares hoy en día son git y mercurial. Los sistemas de repository central más populares son Subversion y SourceSafe de Microsoft. La introducción de http://hginit.com explica la superioridad del VCS "distribuido" sobre el sistema central.

Con un VCS distribuido, cada desarrollador tiene su propio repository local. Generalmente se usa con un depósito central compartido que contiene el lanzamiento oficial. Pero esto es solo una organización de repository. Los VCS "distribuidos" son superiores a los VCS puramente centralizados en cuanto a su capacidad para gestionar la fusión.

Según mi experiencia, si está buscando un DVCS, Git o Mercurial (Hg) es el path a seguir. Decidir entre Git y Hg es una tarea más difícil, sin embargo.

¿Estás usando principalmente Windows? Si es así, Hg es probablemente tu amigo. Combinado con TortoiseHg, es una herramienta muy buena y versátil, que es fácil de usar en comparación con Git. Es un poco less complejo, pero maneja la mayoría de las cosas que Git puede manejar, incluso si no es tan fácil como sin problemas.

Si está utilizando Linux o un shell de Unix, Git sería mi elección. Yo personalmente uso Git en Windows, usando la utilidad git shell. (también funciona bien en Cygwin, si lo prefiere) He descubierto que Git maneja mis proyectos mucho mejor que Mercurial. Sin embargo, si no eres un experto con una command-line, he encontrado que TortoiseGit es un poco más complicado (y complicado) que TortoiseHg. Pero como estoy familiarizado con bash, definitivamente git es mi preference. Es simplemente más rápido, más delgado y más versátil que Hg, en mi time con los dos. Es simplemente un poco más complicado, por lo que la curva de aprendizaje es más alta y desde el principio puede ser propenso a cometer errores con ella, como lo estuve por un corto time.

Entonces, en mi opinión, las preguntas reales son:

Windows (Hg) o Unix (Git)

y

Gráfica (TortoiseHg) o línea de command (shell Git)

Todos los requisitos que necesita están incluidos en TFS 2010. Ramificación y mantenimiento de sucursales aisladas.

TFS es más como un sistema de control de versiones. También es un sistema de control de errores / trabajo y tiene herramientas para compilation integrada. Si los necesita y ya tiene una licencia para TFS 2010, no pierda su time en otros sistemas.

De acuerdo, TFS no se distribuye, pero en realidad, cuando trabajo, me gusta que TFS no se distribuya. Tan pronto como revise el material (en mi sucursal personal) estará en la copy de security diaria, y está disponible para que otros lo puedan ver. (Para mi casa / hobby / cosas personales uso mercurial).

Para todos los demás sistemas, hay herramientas disponibles que le proporcionan la construcción y el seguimiento de fallas, por lo que no es un problema para otras herramientas que no estén disponibles, simplemente lleva time seleccionar las que coincidan con sus necesidades.

Me encanta git y también se está integrando en muchas otras aplicaciones, como Eclipse, Trac. quién tiene que pagar un VCS cuando tienes Git.

El hecho de que el desarrollo del kernel de Linux use git, lo sé porque Linus lo dijo :), que no es un proyecto pequeño, habla por sí mismo.

¡¡¡Subversión!!!

Me gusta Subversion, + TortiseSVN + VisualSVN

http://subversion.tigris.org/
http://tortoisesvn.tigris.org/
http://www.visualsvn.com/

Subversion y Tortise son gratis !, y VisualSVN cuesta solo $ 50 por licencia (pero no TIENES que usar Visual-SVN, es solo la integración VS … no es necesario en lo que a mí respecta).

Aquí hay un tutorial y una guía de installation para los tres productos.
http://www.west-wind.com/presentations/subversion/

y otro…
http://www.dev102.com/2008/10/07/how-to-use-the-svn-client-and-start-working-with-your-subversion-version-control/

Un buen sistema de control de revisiones me ayudará cuando estoy trabajando de manera dispersa. No porque me guste estar disperso, sino porque las demandas cotidianas tienen una forma de dispersar cómo se trabaja. La dispersión se agrava cuando un grupo trabaja en paralelo en un proyecto de tamaño decente.

La persona A está trabajando en la function 1. La persona B está trabajando en la function 2. La persona C está trabajando en la reparación de errores informados en la versión publicada.

Mientras A hace su trabajo, observa un error en el código y lo repara en el acto para no pasarlo por alto, y continúa. La persona C hace 3 correcciones.

A, B y C tienen chat y B siente que necesita las correcciones de errores que C ha hecho de inmediato, así como la corrección de errores que A ha hecho, pero no la function de A. C quiere la corrección de errores de A. A quiere las correcciones de errores de C Y así.

Boss decide que queremos una versión con la function 1, otra versión con la function 2 y una versión con ambas funciones, y una versión que no se haya lanzado ni mantenido.

¿Qué tan bien te apoya la herramienta en estas actividades? ¿Cuánto te obstruye la herramienta en estas actividades?

Estoy muy contento con 'darcs'.

He probado muchos sistemas de control de revisiones. No he encontrado ninguno mejor.

Es simple, es rigurosamente correcto.

Debido a que es riguroso, es confiable y pnetworkingecible. Porque es simple, es útil y no se interpone en tu path.

Mi segunda opción sería git.

Git es bastante bueno, pero no tan riguroso, te obliga a dar órdenes en algunas ocasiones cuando el order no importa. Git es mejor conocido así que es mejor una hoja de vida.

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software