El funcionamiento general de un sistema de control de versiones sigue el siguiente ciclo de operaciones:
- Descarga de ficheros inicial (Checkout):
- El primer paso es bajarse los ficheros del repositorio.
- El "checkout" sólo se hace la primera vez que se usan esos ficheros.
- Ciclo de trabajo habitual:
- Modificación de los ficheros, para aplicar los cambios oportunos como resultado de la aportación de cada una de las personas encargadas de manipular el código de los ficheros.
- Actualización de ficheros en local (Update): Los ficheros son modificados en local y, posteriormente, se sincronizan con los ficheros existentes en el repositorio.
- Resolución de conflictos (si los hay): Como resultado de la operación anterior es cuando el sistema de control de versiones detectará si existen conflictos, en cuyo caso informa de ello y siendo los usuarios implicados en la manipulación del código afectado por el conflicto, los encargados de solucionarlo.
- Actualización de ficheros en repositorio (Commit): Consiste en la modificación de los ficheros en el repositorio; el sistema de control de versiones comprueba que las versiones que se suben estén actualizadas.
Como conclusión, vemos que los sistemas de control de versiones permiten las siguientes funciones:
- Varios clientes pueden sacar copias del proyecto al mismo tiempo.
- Realizar cambios a los ficheros manteniendo un histórico de los cambios:
- Deshacer los cambios hechos en un momento dado.
- Recuperar versiones pasadas.
- Ver históricos de cambios y comentarios.
- Los clientes pueden también comparar diferentes versiones de archivos.
- Unir cambios realizados por diferentes usuarios sobre los mismos ficheros.
- Sacar una "foto" histórica del proyecto tal como se encontraba en un momento determinado.
- Actualizar una copia local con la última versión que se encuentra en el servidor. Esto elimina la necesidad de repetir las descargas del proyecto completo.
- Mantener distintas ramas de un proyecto.
Debido a la amplitud de operaciones que el sistema de control de versiones permite aplicar sobre los proyectos que administra, muchos de los sistemas de control de versiones ofrecen establecer algún método de autorización, es decir, la posibilidad por la cual a ciertas personas se les permite, o no, realizar cambios en áreas específicas del repositorio.
Algunos proyectos utilizan un sistema basado en el honor: cuando a una persona se le permite la posibilidad de realizar cambios, aunque sea a una pequeña área del repositorio, lo que reciben es una contraseña que le permite realizar cambios en cualquier otro sitio del repositorio y sólo se les pide que mantenga sus cambios en su área. Hay que recordar que no existe ningún peligro aquí; de todas formas, en un proyecto activo, todos los cambios son revisados. Si alguien hace un cambio donde no debía, alguien más se dará cuenta y dirá algo. Es muy sencillo, si un cambio debe ser rectificado todo está bajo el control de versiones de todas formas, así que sólo hay que volver atrás.