En el trabajo usamos SVN, pero solo en nombre. No nos ramificamos ni fusionamos. Mantenemos dos copias del repositorio, una sirve como la rama "etiqueta" que se copia cuando hacemos una implementación y nos guardamos para corregir errores y el tipo de características inmediatas de "esto tiene que ponerse en funcionamiento lo antes posible". Debemos recordar copiar los cambios realizados en una copia a la otra copia (el "troncal"). Tenemos una docena de proyectos dentro de una sola carpeta en el repositorio, en lugar de dividirlos. En resumen, lo único para lo que usamos SVN es poder cometer. Todo lo demás se hace manualmente.
He estado evaluando Mercurial; He usado Git en el pasado (soy el único en el equipo que ha usado un DVCS), y estoy recogiendo Mercurial rápidamente. Estoy debatiendo la introducción de Mercurial al resto del equipo como una "mejor manera" de hacer las cosas porque la bifurcación es instantánea, la fusión es mucho más fácil, y podemos comprometer las cosas localmente al contenido de nuestro corazón y solo empujarlas a la central. Rama cuando estén listos. Obtendríamos todos los beneficios de SVN (y no estamos obteniendo muchos beneficios ahora mismo de todos modos ya que nadie realmente entiende SVN) además de las nuevas funciones, no tenemos que tener toneladas de archivos no versionados flotando alrededor, así que si tenemos que retroceder estamos jodidos. El flujo de trabajo parece un poco más simple: solo tenemos que recordar que "Commit" es local y "Push" es como el commit de SVN, y que "Pull" es como la Actualización de SVN (lo que el equipo denomina "get latest").
¿Es este un buen enfoque para tomar? Tenga en cuenta que el equipo es muy flexible y estará de acuerdo con cualquier cosa que mejorará nuestra calidad de trabajo y hará que las cosas sean más fáciles. El CIO incluso me preguntó cuando mencioné que no estábamos usando SVN a su potencial "Es ¿Hay algo mejor que podamos usar? así que él también está a bordo.