Subversion: ¿files de escenario para comprometerse explícitamente?

Me acostumbré mucho a la forma en que git tiene que tocar cada file que quieres comprometer y, mientras lo haces, verificar dos veces la diferencia. Ahora en el trabajo tengo que usar svn y sigo cometiendo cosas de forma accidental. ¿Hay alguna manera de hacer que la subversión se comporte como git en el sentido de que debo contar cada file explícitamente que debería includese en la siguiente confirmación?

Un método alternativo sería utilizar el puente git-svn en el trabajo, a less que existan razones de por qué no puede hacerlo. Nadie más que usted tendrá que saber que en realidad está usando Git. De esta forma obtienes todos los beneficios de Git mientras usas Subversion.

Especifique los files en la línea de command

svn commit -m Carpeta "Mi commit message" / file1.c

Puede crear un set de cambios que enumere solo los files que desea confirmar y luego confirmar el set de cambios. Si eres diligente con la eliminación de sets de cambios cuando termines con ellos y nunca te comprometas sin un set de cambios, creo que eso funcionaría para ti. La solución más fácil sería usar un cliente gráfico (como TortoiseSVN, pero hay otros para todas las plataforms con funcionalidad similar) que le muestra una list de los files que se van a comprometer en el momento en que solicita su post de inicio de session. Luego, si hace clic en "Commit" sin revisarlos, no es porque no le diga lo que va a hacer 🙂

Para seguir la respuesta de Rory, si desea aplicar un comportamiento explícito de confirmación de file, podría escribir un script de shell o por lotes que verifique para asegurarse de que tenía al less un argumento distinto al post de confirmación y devolvió un error si no lo hizo. Eso al less te daría un recordatorio para poner explícitamente los nombres de los files.

Siempre hago una estadística svn y diff antes de comprometerme de todos modos, así que la estadística generalmente me restring que puede haber cosas que aún no he registrado.

Normalmente me comprometo desde algún IDE, como Emacs, donde puedo elegir manualmente el set de files para confirmar.

Subversion funciona de la manera que desee de forma pnetworkingeterminada. Agregar elementos que se agregan , eliminan o modifican se configuran y no se comprometen hasta que use el command de confirmación en el que especifica los files que desea confirmar. Si está utilizando la línea de command y acaba de ejecutar "svn commit" sin ningún otro parámetro, entonces puedo ver cuál podría ser su problema y en ese caso usaría la function de set de cambios que otros han sugerido y también usaré el time de confirmación como un código propio Revisar el time para echar un vistazo a todos los cambios y decidir cuáles entran y cuáles no.

También me gustaría añadir que es un mal hábito realizar solo confirmaciones parciales y solo se debe hacer cuando eres muy consciente de lo que estás haciendo si estás en una twig compartida, ya que es una de las forms más comunes de romper una construcción. hacer cambios inesperadamente interrelacionados que no están incluidos en el mismo compromiso.

Lo que hago y recomiendo a los demás en el caso en que tengo cambios que deseo realizar por separado es crear un parche o un set de parches para los cambios que no estoy interesado en realizar en ese momento y luego revertir esos mismos files de mi copy de trabajo. Ahora que la copy de trabajo solo tiene los cambios que voy a confirmar, rebuildé y verificaré la corrección haciendo testings manuales o testings unitarias y solo cuando todos estos pasen revisen y se comprometan. Creo que de esta manera es la forma más segura de interactuar con un gran grupo, especialmente cuando se realizan cambios complejos. Este process también podría ser más fácil de svn para soportar una function de archivado del lado del cliente para poner los cambios en una tienda temporal con un nombre similar a un set de cambios a través de un solo command.

También por cierto, el uso de TortoiseSVN hace que sea mucho más fácil administrar los sets de cambios y los files de selección cereza que se includeán en cualquier compromiso determinado. Si está en Windows, le recomiendo que lo revise por ese motivo.