¿Cómo funciona un compromiso de Subversion?

Me gustaría saber cómo se transfieren los files al server. ¿El cliente primero envía información sobre en qué carpeta existe el file?

Tampoco sé cuándo y dónde dice el server que hay un conflicto al intentar comprometerse.

Gracias por adelantado.

Realmente no entiendo tu primera pregunta. ¿Por qué te importaría de todos modos?

Si se queja por un conflicto, es muy probable que en su actualización anterior del área de trabajo haya conflictos. Puede haber arreglado eso en el código pero no le ha dicho a SVN que ha resuelto ese conflicto.

Hacer un svn status debería decirle el lugar que contiene el conflicto que se resolverá.

Entonces puede hacer una svn resolve para marcar esos conflictos como resueltos.

(De manera similar si está usando GUI)


Actualización (corresponde a su último comentario por el motivo):

La mejor manera es mirar el código fuente de SVN de hecho 🙂 Sin embargo, como estás construyendo un nuevo sistema en lugar de algo que necesita compatibilidad con SVN, creo que solo necesitas una solución viable en lugar de implementar lo que SVN está haciendo.

Hay dos soluciones en las que puedo pensar (creo que la primera es la forma en que lo hace SVN)

  1. Envíe toda la ruta (relativa) Y la revisión de los objects cambiados al server. El server simplemente puede verificar si el object relacionado tiene una revisión posterior en el server, lo que a su vez significa que el file en el cliente está desactualizado. Si no hay una respuesta desactualizada, el cliente envía el contenido real al server.

  2. Envíe el contenido del file real (por supuesto, con la ruta y la revisión) al server. Haga una comprobación similar a la descrita en 1 y, si no hay problema, realice la confirmación directamente.

El primer enfoque proporciona un mejor performance al evitar tráficos innecesarios. Sin embargo, hay muchas cosas que necesita manejar adecuadamente si está escribiendo ese tipo de sistema de control de revisiones. por ejemplo, si toma el primer enfoque, ¿cómo puede evitar el cambio de datos entre la primera y la segunda llamada al server? (SVN está teniendo algún tipo de object de transacción). ¿Cómo lidiar con mover y renombrar? etc.

Si no hay una razón especial, ¿por qué simplemente no hace uso de SCM existente como su back-end? Ya sea SVN o Git o Hg deberían ahorrarte muchos problemas para lidiar con tantos problemas.