La pregunta que sebasgo apunta realmente tiene muchas buenas respuestas, pero déjeme decirle mi experiencia personal de todos modos. Trabajo con un puñado de otras personas diseminadas por todos los Estados Unidos haciendo lo que es esencialmente un trabajo de consultoría privado. Los clientes varían en tamaño, pero nuestro equipo es pequeño y trabajamos bastante rápido. El código es comercial pero es propiedad de los clientes cuando hayamos terminado.
Utilizamos Mercurial, pero la herramienta específica es menos importante que el flujo de trabajo general de usar control de versión distribuida en lugar de centralizada. En mi experiencia allí unas dos grandes ventajas de productividad que ya no desea trabajar sin:
- primero y más importante: ramas y uniones son fáciles. Este es un efecto secundario de ser distribuido, no estrictamente un requisito, pero es crítico para un DVCS y lo encuentro crítico para mi trabajo. Cada uno de nosotros puede ramificar libremente todas y cada una de las características en las que necesitamos trabajar, hacer que funcione en un entorno aislado (sin interferencias de nuestro repositorio compartido) y cuando estemos listos para volver a fusionarlo. "Mantenerse al día" con los cambios de otros es tan fácil como ocasionalmente fusionarse, con la opción de deshacerse de la fusión y continuar si se trata de resolver conflictos es demasiado esfuerzo en este momento. Podemos tomar cambios específicos y juntarlos en una rama de prueba, y mantener los resultados si nos gustan o lanzarlos si no lo hacemos. Esta capacidad de probar cosas, compartirlas y mantener solo los mejores resultados es un beneficio serio. Como digo, no es uno con el que pueda trabajar cómodamente sin este punto.
- Trabajar sin conexión. No parece un gran problema, hasta que no trabajes en tu entorno habitual. Puedo irme de vacaciones, o viajar, o tener un corte de energía, o simplemente quiero sacar mi computadora portátil afuera en un buen día y seguir trabajando. El beneficio psicológico de poder levantarme e irme sin necesidad de dejar de trabajar, o perder mi capacidad de controlar mi trabajo es muy real.
Más allá de estos efectos, que se aplican a todos mis proyectos, relacionados con el trabajo y no, uno de los beneficios específicos a nuestra disposición particular, que se refiere a su pregunta sobre el uso comercial y que fue inesperado ocurrió: el cliente puede en realidad trabajar en el código.Pueden tomar una instantánea, realizar cambios locales y enviarnos correcciones o mantener el código modificado para un propósito particular. Esto es de gran ayuda para mantenerlos involucrados, para que no se desincronicen demasiado con lo que quieren, y para permitirles ajustar las cosas sin romper nada (no nos fusionamos en sus cambios a menos que estén listos; mismas reglas). nos aplicamos por nosotros mismos.)
No tenemos muchas quejas. Toma un tiempo acostumbrarse, aunque el conjunto de comandos de Mercurial está lo suficientemente cerca de Subversion (que solíamos usar) que no hemos tenido muchos problemas. Incluso las extravagancias ocasionales, como el control accidental de archivos binarios o archivos que no deberían registrarse, podemos movernos porque podemos volver a crear un repositorio sin esos cambios, y reemplazar nuestro principal si es necesario. Esto no se adapta bien a un gran grupo de personas, pero funciona bastante bien para un pequeño equipo de 3-4 personas.
Lo único negativo que puedo pensar que es realmente un problema, es un efecto secundario de poder ramificar fácilmente: puede tener suficiente trabajo pendiente que pierda la pista de él. Esto es un poco parecido a tener muchos borradores de un documento escrito: pasar suficientes copias y no recordar qué copia tuvo los cambios que desea. Eso no es directamente un defecto de la herramienta, y en todo caso hace que sea más fácil volver a juntar el trabajo dispar que las herramientas menos capaces de fusionarse. Pero es un peligro. La única manera que conozco de administrarlo es ser disciplinado sobre la escritura de registros de confirmación útiles, descripciones de ramas útiles y no tratar de mantener demasiadas tareas abiertas a la vez. En otras palabras, incluso un flujo de trabajo muy bueno sigue siendo un flujo de trabajo y necesita atención o se sale de control.
que tienen problemas particulares con Mercurial (Realmente quiero rama de apoyo llamado a ser un poco poco más fácil) y con Git (Realmente quiero el conjunto de comandos para ser más intuitiva, incluso ahora), pero son quejas sobre problemas de esquina que vienen con gran familiaridad. Ni siquiera serían posibles si estas herramientas no hubieran empujado el sobre de lo que pensé que un VCS podría hacer mucho más allá de lo que sabía antes de empezar a usarlos.
http://stackoverflow.com/search?q=distributed+version+control – arathorn