Comprometerse en SVN sin dejar que otros realicen el pago – ¿es posible?

Estoy usando SVN como mi control de fuente con ANKH y TortoiseSVN. Estoy escribiendo un gran cambio en un proyecto, y lleva unos días realizar el cambio, pero mientras tanto, todavía quiero comprometerme de vez en cuando para realizar una copy de security. Pero si me comprometo, otros miembros del equipo se actualizarán con mi trabajo sin terminar.

¿Hay alguna forma de que pueda "comprometerme con la copy de security" sin cambiar la revisión (para que otros no se actualicen con mis cambios)?

¡Gracias!

Esto suena como un caso clásico para usar twigs de características . Esto mantiene su trabajo separado, pero permite que todos los demás beneficios de Subversion continúen.

Para profundizar en iconik's comentario iconik's :

Una de las grandes características de SVN es la capacidad de branch una solución. Cuando crea una branch , básicamente está creando un nuevo repository copyndo el código existente del tronco.

Mientras trabaja en esa twig, puede hacer cualquier cosa con el código y no afectará al enlace troncal. Cuando haya terminado con todos los cambios, puede merge la twig nuevamente en el tronco.

Sin embargo, es posible que otras personas lo hagan en la misma twig que usted creó (aunque es raro), pero puede pedirles que no lo hagan y no deberían tener problemas.

Se pueden encontrar más detalles leyendo este libro de SVN

Los comentarios anteriores son respuestas razonables. Puede crear una sucursal separada para sus cambios que las personas saben que no será correcta (posiblemente ni siquiera build) y luego fusionar las twigs nuevamente. Se advirtió que este puede ser un process doloroso.

Realmente, este tipo de cosas no están bien atendidas por Subversion. Una de las grandes ventajas de los sistemas de control de versiones distribuidas como git, mercurial y bazaar es que le permiten realizar un compromiso local para realizar copys de security sin enviarlo al repository principal de inmediato. Por lo tanto, una opción sería realizar una doble administración al instalar también un cliente DVCS localmente y usarlo para realizar confirmaciones locales con fines de respaldo. La mayoría de los clientes DVCS funcionan bien sin tener que configurar un server central para que pueda usarlo sin causar conflictos con su server Subversion. En realidad, esta es una práctica bastante común entre los desarrolladores que desean los beneficios del control de versiones distribuidas, pero que trabajan en una empresa que utiliza el control de versiones centralizadas.

Es bastante útil "bloquear" la twig durante un cierto período de time para que otros no puedan realizar confirmaciones. Por ejemplo, al crear una versión de software y desea tener una versión conocida, etc. Subversion proporciona un mecanismo de "enlace".

http://svnbook.networking-bean.com/en/1.1/ch05s02.html

Puede escribir annotations de confirmación "post" o "pre" y habilitar / deshabilitar las confirmaciones junto con otras tareas.

Sí, use una twig (usando svn copy ). La parte que omitió es que con un command de combinación de svn , puede tomar todos los cambios realizados en la twig y aplicarla al tronco (suponiendo que todas las fusiones se pueden hacer sin conflicto). He usado SVN para contenido web de esta manera. Tenía una twig de desarrollo (svn copy) en la que hice todo el trabajo web, y cuando estuvimos listos para comenzar, haría una combinación de svn en el tronco (en vivo) y luego implementaría el tronco en el server.

Hay una gran ventaja de hacer esto sobre el uso de uno de los sistemas de repositorys distribuidos como Mercurial (aunque es un buen producto), que es que su sucursal está en el server, que tiene discos duros más confiables y copys de security más frecuentes. Si se compromete con su repository local de Mercurial y su computadora de escritorio muere, su trabajo se pierde. También significa que si desea queueborar con un grupo selecto de personas (¡ojalá tenga algún control de calidad antes de insert el código en el enlace troncal!), Puede hacerlo apuntando a su sucursal.