¿Qué sucede en un software de control de versiones, cuando un usuario elimina un archivo en uso por otro usuario?

Realmente hay dos partes para esta pregunta. Primero es lo que le sucede al archivo en el sistema de control de versiones. En segundo lugar, lo que le sucede a alguien que usa el archivo, que interpretaré como editar el archivo.

El propósito principal de un sistema de control de versiones es permitirle volver a cualquier versión anterior de los archivos almacenados. Como son los archivos de código más comunes para la creación de software, le permite obtener cualquier versión de la base de código en el tiempo anterior a cuando el código se agregó por primera vez al sistema de control de versiones.

En el sistema de control de versiones, muy poco sucede cuando elimina un archivo. El archivo todavía existe en el control de versiones. El contenido sigue ahí junto con el historial de un archivo. Como resultado, siempre puede recuperar un archivo eliminado. Todo lo que sucedió es que la eliminación se registra y, cuando obtiene la última versión, el archivo se elimina de su copia de trabajo local (a veces llamada su espacio de trabajo).

La forma en que se registra esa eliminación depende del sistema de control de versiones utilizado. En Team Foundation Version Control (TFVC), esa eliminación se registra como una eliminación en el conjunto de cambios que se confirmó y el archivo se marca como eliminado en el esquema. Más tarde puede recuperar el archivo si lo desea. En Git, el archivo ya no está referenciado en el commit que representa el estado del repositorio (el árbol en ese commit ya no tiene una referencia al archivo donde lo hacen los commits anteriores de ese árbol).

La segunda parte es lo que le sucede a la persona que está editando el archivo que la otra persona eliminó. Hasta que ese otro usuario actualice el espacio de trabajo local, el usuario que edite el archivo no se verá afectado. Cuando el usuario obtiene la última versión del servidor (TFVC) o remota (Git), se le presentará un conflicto para resolver. El usuario que estaba editando el archivo deberá decidir cómo manejar los cambios, lo que podría incluir hacer esos cambios en otro lugar, abandonarlos o restaurar el archivo que se eliminó.

Hay muchos detalles de bajo nivel que he pasado por alto que harían la respuesta mucho más larga. Si está interesado en los detalles de cómo funciona Git, le recomiendo el Capítulo 10 de Pro Git.