Inicio con esta entrada una serie de sobre que requisitos creo que debe cumplir un sistema de control de versiones. La intención es hacer entradas cortas reflejando las características que me gustaría tener.
La primera característica es la de poder suspender trabajos. Es decir, mientras estas realizando una tarea poder guardar el estado de tu entorno de trabajo para atender otra tarea más prioritaria, por ejemplo, un error en producción, y una vez solucionado esa tarea prioritaria, poder continuar con la tarea que originalmente estabas realizando.
De los controles de versiones con lo que he trabajado los únicos que lo implementan de forma nativa son el Git y el Rational Team Concert.
El resto de herramientas con las que he trabajado (Visual Source Safe, CVS y Subversion) no lo soportan de forma nativa, así que hay que recurrir a métodos más manuales como comitear los cambios a medias o bien a guardárselo en otra carpeta. Ambas soluciones muy poco elegantes.